基于Gis的火车换乘系统的设计毕业论文.doc_第1页
基于Gis的火车换乘系统的设计毕业论文.doc_第2页
基于Gis的火车换乘系统的设计毕业论文.doc_第3页
基于Gis的火车换乘系统的设计毕业论文.doc_第4页
基于Gis的火车换乘系统的设计毕业论文.doc_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Gis的火车换乘系统的设计毕业论文目 录1绪论61.1引言61.2 设计论文背景61.3 火车换乘系统的意义61.4 火车换乘系统的关键技术71.4.1 GIS技术71.4.2组件式GIS71.4.3数据库技术81.5系统开发中解决的问题81.6系统开发的主要路线81.7论文主要的研究内容92基础数据的处理流程92.1数据来源92.2网络数据集的建立92.2.1基础图层92.2.2 创建网络数据集112.2.3校验网络数据集的可用性142.4本章总结153 火车换乘系统的设计163.1 系统开发平台设计163.1.1 GIS系统平台163.1.2系统开发语言163.1.3数据库平台173.1.4系统运行平台173.2系统数据层次结构搭建173.2.1系统结构173.2.2系统空间数据173.2.3系统属性数据183.3系统的组织结构与实现思路193.4本章总结214 火车换乘系统的实现224.1系统概述224.2系统界面224.3功能模块论述234.3.1车次查询234.3.2车站查询244.3.3按路径查询244.3.4高级274.3.5 地图工具284.4本章总结305总结与展望315.1论文研究成果315.2 论文的不足及进一步工作展望31致 谢32参考文献33附 录(一) 主要程序代码34u 1绪论l 1.1引言铁路建设的积极推进,更多的火车车次和铁路运输线投入到使用当中。而且随着现代化工业发展的有力步伐,也涌现出了很多不同种类的火车出行方式。最近的高速铁路、省会直达都是令人振奋的消息,这样我们出行就有了更多的选择方式,而这仅仅是针对我们的火车。这就为出行者带来了一定的困扰尤其是在像郑州、北京、上海等城市有众多的铁路线在这里交汇,从出发点可以到达目的地的火车有十几条之多,然而如何能在有限的时间内选择出我们最佳的出行路线呢?现在是信息化时代,在多源化的铁路信息中我们如何去整合他们并有效地加以组织利用成了关键性的问题。而随着GIS的发展将GIS运用到火车出行系统当中,更能解决很多的出行选择难题。同时能够有效地组织各种信息数据,使它真正能够为我们出行服务。l 1.2 设计论文背景目前很多有很多的火车查询软件包括网络上的,然而其中的大部分都只是简单的时间数据库查询,就是简单的火车时刻表的查询。对于很多用户在日常生活中遇到的问题不能很好的解决,更不能实现火车的换乘查询,也不能将火车信息可视化的显示在地图当中。这就严重的影响了用户使用软件的效果。例如某个火车查询网站提供给用户三种火车查询的方法车站查询、车次查询、出发地目的地查询这三种查询方式。每次的查询都是只将基本的火车信息全部罗列在用户面前,而太多的数据并不是用户关心的数据,并且系统也没有给用户提供自定义查询的接口从而缩小查询的范围使用户更容易的得到所关心的数据。并且由于种种限制也不能将有效的数据实时的以可视化的方式呈现在用户面前,使用户在查询时还要逐一筛选。这只是其中的一个问题,而本系统将会一一解决这样的问题。l 1.3 火车换乘系统的意义火车出行是一个十分重要的问题,如果没有选择合理的出行路线方案,不但可能给出行者带来不便,也可能由于大量出行人员由于没有合理的选择出行路线而造成火车的某一车次运力压力过大等种种情况而这都是需要我们加以重视的。面对用户存在种种困惑,本系统将以更加人性化的方式、更直观的方式式将用户所关心的问题逐一解决。l 1.4 火车换乘系统的关键技术n 1.4.1 GIS技术地理信息系统( Geographic Information System, 简称 GIS )作为获取、存储、分析和管理地理空间数据的重要工具、技术和学科,近年来得到了广泛关注和迅猛发展。由于信息技术的发展,数字时代的来临,理论上来说,GIS可以运用于现阶段任何行业。GIS经过了40年的发展,到今天已经逐渐成为一门相当成熟的技术,并且得到了极广泛的应用。尤其是近些年,GIS更以其强大的地理信息空间分析功能,在GPS及路径优化中发挥着越来越重要的作用。GIS地理信息系统是以地理空间数据库为基础,在计算机软硬件的支持下,运用系统工程和信息科学的理论,科学管理和综合分析具有空间内涵的地理数据,以提供管理、决策等所需信息的技术系统。简单的说,地理信息系统就是综合处理和分析地理空间数据的一种技术系统。n 1.4.2组件式GIS组件式GIS是面向对象技术和组件技术在GIS软件技术开发中的应用。组件式GIS控件与其他软件通过标准接口进行通信,实现跨程序、跨计算机、跨网络的分布式操作。同传统的GIS相比较,它具有多方面的特点,包括:无缝集成、跨语言使用、易于推广、开发简捷、使用方便、成本低、可视化界面设计以及Internet应用等。组件式GIS的基本思想是把GIS的各大功能模块划分为几个控件,每个控件完成不同的功能。各个GIS控件之间,以及GIS控件与其它非GIS控件之间,可以方便地通过可视化的软件开发工具集成起来,形成最终的GIS应用6。控件如同一堆各式各样的积木,他们分别实现不同的功能(包括GIS和非GIS功能),根据需要把实现各种功能的 “积木”搭建起来,就构成应用系统。n 1.4.3数据库技术本系统使用Access数据路软件,Access 是微软公司推出的基于Windows的桌面关系数据库管理系统(RDBMS,即Relational Database Management System),是Office系列应用软件之一。它提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象;提供了多种向导、生成器、模板,把数据存储、数据查询、界面设计、报表生成等操作规范化;为建立功能完善的数据库管理系统提供了方便,也使得普通用户不必编写代码,就可以完成大部分数据管理的任务。Access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb)的数据库文件中,便于用户的操作和管理。Access是一个面向对象的开发工具,利用面向对象的方式将数据库系统中的各种功能对象化,将数据库管理的各种功能封装在各类对象中。它将一个应用系统当作是由一系列对象组成的,对每个对象它都定义一组方法和属性,以定义该对象的行为和外观,用户还可以按需要给对象扩展方法和属性。通过对象的方法、属性完成数据库的操作和管理,极大地简化了用户的开发工作。1.5系统开发中解决的问题本系统开发中主要解决一下几个方面的问题1) 建立全国主要铁路干线和主要地级市的网络数据集。2) 实现基于网络图层和要素图层模糊查询、点选查询以及数据库的属性查询。3) 实现用户的自定义查询。4) 实现火车换乘查询,地图上实时动态显示。l 1.6系统开发的主要路线本系统以全国的主要铁路干线为研究对象,采用JAVA语言结合GIS二次开发平台在GIS空间数据和Access属性数据库的基础之上制作可视火车换乘系统。系统在JAVA环境下引入AE类库实现对AE类库的调用,并通过JAVA的ODBC.JDBC实现对Access数据库的操作,从而实现属性数据和空间数据的联动操作。从应用程序的用户接口得到关键信息,通过JAVA语言的处理将信息调入ArcEngine的类库和Access数据库进行处理并将结果反馈到用户界面,从而实现可视化的火车信息查询、车站查询和换乘查询。对数据库的更新功能主要是对Access数据库的关于火车车次和站点的添加、编辑的操作。l 1.7论文主要的研究内容本论文主要是对系统设计和建立整个过程的具体描述1) 阐述系统开发的主要背景和研究目的,以及系统能够解决的问题和系统建立的思路。2) 阐述系统所涉及的基础数据、网络数据和属性数据的建立和组织的详细过程。3) 对系统的各个功能模块的简单阐述。4) 阐述系统中存在的不足和缺点,同时也提出了解决方法和对未来的展望。5) 提供系统开发的主要代码,以供以后的研究和使用。u 2基础数据的处理流程l 2.1数据来源从国家地理信息系统数据网站上下载国家1:400万主要的铁路干线的基础数据和省界数据以及主要地级市居民点数据shp格式。属性数据主要通过上网查询火车信息并手动录入数据库。l 2.2网络数据集的建立n 2.2.1基础图层(1) 主要城市点居民点图层、主要铁路干线图层、省界线图层、省面图层如图2-1所示:图2-1 铁路网数据图(2) 打开ArcMap,打开工具箱,选择Data ManageMent Tools选择 Projections and Transformations 工具,转换图层的坐标系统,并统一为WGS1984投影坐标系统单位为米如图2-2所示图2-2 基础数据图层坐标系统n 2.2.2 创建网络数据集在主要铁路线和地级市居民点的基础之上制作网络数据集(1) 创建地籍数据库1 打开Arccatalog在数据文件夹上单击右键,新建personal Geodatabase 命名为railway,如图2-3所示图2-3 新建Geodatabase2 在railway数据库上新建railway feature dataset,如图2-3所示图2-3 新建FeatureDataset3 将主要铁路线和地级市居民点导入到railway要素集当中,选择采用网络数据集的方式建立拓扑网络,选择railway要素数据集单击右键创建Network dataset,如图2-4所示:图2-4 新建网络数据集n 2.2.3校验网络数据集的可用性(1) 打开Arcmap,点击菜单栏空白处选择NetworkAnalyst工具条激活它,添加网络数据集到Arcmap中如下图2-5所示图2-5 网络数据集图层(3)单击NetworkAnalyst工具选择New Route项,并在图层列表中发现多出了RouteLayer图层,单击NetworkAnalyst工具条中的工具选择两个位置进行最短路径查询,单击工具显示最短路径如图2-6所示:图2-6 测试网络数据集l 2.4本章总结本章主要是描述在国家主要铁路网的基础之上进行网络数据集的建立过程。先对收集到的数据进行初期的编辑处理,然后针对国家主要铁路干线图层进行网络数据集的建立和校验,网络数据集是本系统的实现基础。u 3 火车换乘系统的设计GIS火车换乘系统的建立是主要根据系统功能模块的设想,系统遵循如下的总体设计。系统具体要实现的功能,具体化为数据库的查询要求、地图的可视化要求、模糊查询、点选查询要求、根据条件实现数据库与地图的可视化联动要求、最短路径查询。l 3.1 系统开发平台设计n 3.1.1 GIS系统平台Arcgis作为GIS软件平台行业的领跑者,以她强大的功能一直备受行业人士的青睐。GIS火车换乘系统采用Arcgis的轻量级开发组件Arcengine,在ArcGIS 9系列产品中,ArcGIS Desktop、ArcGIS Engine和ArcGIS Server都是基于核心组件库ArcObjects搭建。 ArcObjects组件库有3000多个对象可供开发人员调用,为开发人员集成了大量的GIS功能,可以快速的帮助开发人员进行GIS项目的开发。ArcGIS Engine开发包提供了一系列可以在ArcGISDesktop框架之外使用的GIS组件,ArcGISEngine的出现对于需要使用ArcObjects的开发人员来说是个福音,因为ArcGISEngine发布之前,基于ArcObjects的开发只能在庞大的ArcGIS Desktop框架下进行。.ArcEngine包括核心ArcObjects的功能,是对AO中的大部分接口、类等进行封装所构成的嵌入式组件。2.AE中的组件接口、方法、属性与AO是相同的。ArcEngine具有简洁、灵活、易用、可移植性强等的特点。n 3.1.2系统开发语言本系统采用Java语言进行开发,对于Java语言大家肯定最熟悉不过了。Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的动态语言。Java语言的语法与C语言和C+语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C+ 中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。Java语言全面支持动态绑定,而C+ 语言只对虚函数使用动态绑定。总之,Java语言是一个纯的面向对象程序设计语言。Java语言也完全支持com组件机制,这就为和AE的结合打下了基础,ESRI公司推出的AE for JavaSDK 这使得在JAVA环境下的GIS二次开发更为简单方便。n 3.1.3数据库平台Access管理的对象有表、查询、窗体、报表、页、宏和模块,以上对象都存放在后缀为(.mdb)的数据库文件中,便于用户的操作和管理。GIS平台Arcengine能够良好的支持Access数据库,Java语言在ODBC.JDBC 的桥接模式下也能够很好的支持Access数据库。n 3.1.4系统运行平台本系统的运行环境为Win XP 操作系统,以及系统平台要装有JavaRuntime 和 ArcgisEngine9.2 Runtime。n 3.2系统数据层次结构搭建n 3.2.1系统结构在进行数据库设计时,通过数据分层、图层管理、属性编码和空间索引设计,建立空间数据库,然后进行属性数据库设计,最后建立空间数据库与属性数据库的连接关系。 如图3-1所示 GIS火车换乘系统 属性数据 ( Access) 空间数据(Geodatabase) 关键字火车站图层;铁路干线图层;省界线图层;省界面图层;车站详情,车次所经车站,Point属性表JDBCArcGIS engine9.2 图3-1 : 系统结构图n 3.2.2系统空间数据空间数据是系统中GIS应用环节的基础数据,他的合理组织直接影响着系统的整体组成。本系统空间数据主要来自于国家1:400万基础地理数据,并选择需要的存储在四个图层当中分别是省界线图层,省界面图层、主要铁路线图层、地级市以上居民点图层,每一个图层都包含了图层名称、空间特性、属性数据等数据。另外一部分是网络数据集,它是存储网络拓扑信息的载体,通过国家主要铁路创建而成的,也作为重要的空间数据存储在数据库中。n 3.2.3系统属性数据系统的属性数据主要存储在Access数据库,分为三张表车次所经车站表、车站详情表、point属性表(数据处理阶段的系统生成表)因为在系统实现过程中,要实现最短路径就必须要有可用的网络节点存在在网络数据上,然而个别的地级市居民点离网络过远这样就无法实现有效地最短路径分析,只能通过居民点查找网络节点,通过寻找最近设施点的方法将网络节点和城市居民点一一对应,并作为火车站的位置,存储在系统生成这张表中图3-2 point属性表图3-3 车次所经车站表图3-4车站详情表l 3.3系统的组织结构与实现思路GIS火车换乘系统主要实现火车的可视化查询、火车信息的修改和用户自定义最优换乘方案查询,用户可以在看到查询结果的同时看到具体的在地图中的信息可视化显示。为了实现设计的功能,主要有以下几个模块基于文本的火车站查询,基于文本的车次查询、基于文本的换乘方案查询、用户自定义换乘方案查询、点选换乘方案查询。如下图3-5所示:结果用户输入车次名称弹出窗体显示车次详情地图显示本车次所经车站,弹出窗口显示车站详情列表显示所有乘坐方案,以表格形式显示乘坐方案详情,并排序。在地图上显示乘坐方案火车换乘系统路径查询车次查询车站查询高级用户输入车站名称系统查找所经车站系统查找车站详情系统查找车次详情系统查找所经车次系统根据最短路径在地图中显示出乘坐方案点击车站名称单击某车次输入出发站终点站在地图图上选择输入自定义选择项:如价格系统查找所有乘坐方案系统查找并筛选方案单击乘坐方案 图35 系统实现思路l 3.4本章总结本章的主要内容是基于GIS火车换乘系统的建立过程,在分析合理选用开发平台、开发方式、开发语言和数据库的基础上,以全国主要铁路线为例,探讨了基于ArcEngine的火车换乘系统数据结构的建立:空间数据和属性数据,并给出了系统开发组织结构和系统实现的基本功能。u 4 火车换乘系统的实现l 4.1系统概述本系统以中国主要铁路干线作为研究对象,利用已有的中国铁路网图层,结合地级市居民点图层数据、网上搜集的火车站、火车车次信息等,开发了一个基于ArcEngine的GIS火车换乘系统。系统的软件设计采用Java作为可视化编程工具,结合ArcEngine9.2进行开发。在Java环境下通过JDBC.ODBC与Access数据库连接,用SQL语句访问表中的数据,实现对火车信息的管理。利用ArcEngine组件提供的各种属性、方法和工具,能够进行空间数据获取、数据查询、数据分析等操作,从而实现对铁路网络信息数据的管理。l 4.2系统界面系统主要有菜单栏、工具栏、查询页签、结果页签、高级页签组成和图形窗口组成。系统界面设计人性化,并可以自由更换主题,更方便了用户使用。如图41所示图41系统主界面l 4.3功能模块论述n 4.3.1车次查询打开主页面点击车次查询单选按钮,在车次文本框中输入要查询的车次号,然后点击查询,如图42所示:图42 车次查询在结果页签当中,将所有结果依照次序罗列出来,我们点击第十站郑州查看详情如图43所示:图4-3车次查询结果可以看到当前车次,到达郑州的时间、出站时间本车次是否有硬座、软座等信息。n 4.3.2车站查询单击车站查询单选按钮,输入要查询的车站名称:此处我们以宝鸡为例,在查询结果的车次列表上我们单击1046次列车会弹出1046次列车的详细信息如图4-4所示:图4-4车站查询结果n 4.3.3按路径查询本模块是本系统中主要的模块。本模块的实现思路:首先从用户输入得到出发站和终点站,以出发站和终点站为关键字在数据库中车次所经车站表进行遍历。将所有含有出发站或者是终点站的车次分为只含有出发站的车次、只含有终点站的车次、既有出发站又有终点站的车次并分别存储在list1、list2、list3中,然后对每一个list分别按照相应的条件进行排序并。将新的list1从出发站开始每次增加一个站点向下进行循环并分别对list2、list3进行比对如果list2或list3中含有当前循环的站点则将当前站点作为中转站以当前list1中的车次作为中转前车次、以list2或list3中的车次作为中转后车次存储在方案列表中。以这样的方法分别对list3进行遍历。然后要实现车次路径在地图上显示,有两种途径:(1):将每两个相邻火车站之间的铁路线进行命名,并存储在图层中,当用户点击换乘方案时将当前方案所经过的所有铁路线段的名称查找出来,然后再到mapbean中一一显示。这样做显然非常不合适,数据处理的工作量比较大。(2):也是本系统所采用的方法,得到方案所经过的所有车站的名称,并以这些车站作为最短路径分析时的stops,这样就查找出每两个相邻车站之间的路径,并存储在新的图层中显示在mapbean中。单击按路径查询单选按钮,输入出发站名称和目的站名称,单击查询按钮:在结果页签中显示所有换乘方案。单击能够直接到达的换乘方案返回路径到mapbean中如图4-5所示:图4-5直接到达方案单击需要换乘的方案如图4-6所示:图4-6需要换乘的方案返回换乘路径,在地图窗口中显示,并且气泡窗口会在出发站、换乘站和终点站处进行提示方便用户进行查看。n 4.3.4高级单击高级页签,输入出发站和终点站,选择并输入到站时间段、车次类型等信息。点击查询,所有方案存储在表格当中,表格某一行在地图中显示当前换乘路径,并弹出路程长度如图4-7所示。图4-7 高级查询结果在查询结果的表格中单击全程时间或者硬座价格等列的表头或分别按照升序或者降序进行排列显示。注:全程时间为从出发站到换乘站、在换乘站等待换乘时间、从换乘站到终点站时间之和。价格为零表示此车次没有此类座位如图4-8所示。图4-8 方案排序n 4.3.5 地图工具(1) 点击工具栏中测量距离工具,在map中单击左键选择端点后,单击右键计算距离如图4-9所示图4-9 测量结果(2) 单击工具栏中周边查询工具,然后输入缓冲区距离,查找出当前距离范围内的所有火车站,如图4-10所示图4-10 周边查询结果(3) 单击菜单栏中的选择窗口菜单,选择显示鹰眼如图4-11。图4-11 鹰眼(4)单击菜单栏中的图上选择,分别选择矩形查询、圆形查询,进行空间查询图4-12 查询方式图4-13 矩形框查询 图4-14 圆形框查询单击主题选择菜单,用户可以选择合适的界面风格如图415所示:图4-15 主题风格选择l 4.4本章总结本章的主要内容是GIS火车换乘系统的开发与集成,主要包括系统概述,系统界面以及功能模块的实现。在功能实现部分,本系统主要实现了车次查询、车站查询、路径查询、周边查询、测量距离等功能。u 5总结与展望l 5.1论文研究成果本系统以全国铁路干线为研究对象,从GIS过车换乘系统的关键技术、基础数据的获取和建立、数据库的建立等几个方面着手,初步分析研究了火车换乘的方法、空间数据和属性数据的关联以及系统平台的建立。利用已有的全国铁路网地图,结合网上搜集的火车车次信息等,利用java结合ArcEngine9.2平台建立火车换乘系统。该系统可以脱离相关GIS软件独立运行,主要包括地图操作、车次查询、车站查询、路径查询、周边查询、测量距离等功能模块,实现了较为简单的GIS火车换乘系统。 对GIS火车换乘系统中的相关技术,从理论到实践进行了一系列基础性及实验性的研究,主要工作有:(1) 对二维空间查询分析技术进行了研究,实现了地图点状缓冲区查询查询、圆形查询、框选查询、测距等功能。(2)实现了火车换乘的基本查询功能,包括:车站查询、车次查询。(3) 实现了可视化的火车换乘查询。l 5.2 论文的不足及进一步工作展望由于作者能力所限,就本文GIS火车换乘系统研究而言,还有一些需要改进和提高的地方,具体如下:(1) 系统实用性:本系统采用的是单机模式,还不能和Internet进行实时的传递数据,本系统应该采用网站的形式进行开发,不但可以让本系统更好的服务于大众,也能够实时的更新火车信息数据。 (2) 系统的交互性:本系统仅完成了部分内容并且所做的工作有限,交互性不强。(3) 系统的优化:应在数据处理上更加精细,使系统反应时间加快。(4) 系统的功能:Arcengine9.2为我们提供了丰富的编程接口,很多有用的功能本系统没有实现,比如地图编辑、属性数据更新的功能。u 致 谢在即将毕业之际,我首先要向我的指导老师李老师致以最诚挚的感谢。本论文的研究工作是在导师的关怀和指导下完成的。从论文选题到撰写完成的整个过程,李老师多次提出宝贵意见并给予指导才使得系统能够圆满完成。在课题研究期间,李同学给予了宝贵意见,使得自己在不断的学习探讨中,取得了不小的进步,在此也表示衷心的感谢!同时在系统的开发中参考了网上的大量实例,对我帮助比较大,在此我感谢ERSI社区论坛上的诸多帮助过我的人。 感谢在大学四年来传授给我知识的地理信息系统教研室全体老师们,正是他们使我学到了许多宝贵的知识并拥有了不懈的动力!最后我对所有关心我、支持我的同学们、朋友们表示感谢!u 参考文献1兰小机,刘德儿. Arcobjects GIS应用开发_基于C#.NET.2006年9月2汤国安,杨昕.ArcGIS地理信息系统空间分析实验教程.2006年1月3 Bruce Eckel. thinking in java 4.2006年2月4 涂超. 泉州市电子地图及其公交查询功能的实现.苏州科技学院学报(工程技术版).2006年6月5 金永超. 基于GIS的公交综合信息平台研究与设计.2007年10月.硕士论文6 张荣梅.智能交通地理信息系统的设计与实现.计算机应用研究,2000年7罗雄.使用.NET或JAVA进行Arcengine开发,2008年4月8栾军.铁路物资管理信息系统.2007年12月9甘仞初.信息系统开发2007年5月10 陈述彭. 城市化与城市地理信息系统2000年3月11 谢昆青. 空间数据库.2004年1月12 程雄,王红. GIS软件应用-AEC/INFO软件操作与应用.2004年6月u 附 录(一) 主要程序代码加载数据主要代码public class MySource String pPath;IWorkspaceFactory pWorksapceFactory;/ 创建工作空间工厂public IFeatureWorkspace pFeatureWorkspace;/ 定义工作空间IFeatureClass cityFeatureClass;IFeatureClass railwayFeatureClass;IFeatureClass netFeatureClass;IFeatureClass junctionFeatureClass;IFeatureClass lineFeatureClass;IFeatureClass mianFeatureClass;public MySource(String pPath) super();this.pPath = pPath;try pWorksapceFactory = new AccessWorkspaceFactory();pFeatureWorkspace = (IFeatureWorkspace) pWorksapceFactory.openFromFile(pPath, 0); catch (UnknownHostException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();public IFeatureClass getCityFeatureClass() /得到地级市居民点的要素类try cityFeatureClass = pFeatureWorkspace.openFeatureClass(地市级居点); catch (AutomationException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();return cityFeatureClass; public IFeatureClass getRailwayFeatureClass() try railwayFeatureClass = pFeatureWorkspace.openFeatureClass(主要铁路); catch (AutomationException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); return railwayFeatureClass; public IFeatureClass getJunctionFeatureClass() try junctionFeatureClass = pFeatureWorkspace.openFeatureClass(railway_ND_Junctions); catch (AutomationException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();return junctionFeatureClass; public IFeatureClass getLineFeatureClass() try lineFeatureClass = pFeatureWorkspace.openFeatureClass(省界线); catch (AutomationException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); return lineFeatureClass; public IFeatureClass getMianFeatureClass() try mianFeatureClass = pFeatureWorkspace.openFeatureClass(省界面); catch (AutomationException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace(); return mianFeatureClass; 获得路径方案模块:public List getStationsTrains() List stationsTrains;stationsTrains = new ArrayList();List startStopStationsTrains;/ 定义含有出发点又含有结束点的车次listList startStationsTrains;/ 含有出发点的列车List stopStationsTrains;/ 含有终点站的列车startStopStationsTrains = new ArrayList();startStationsTrains = new ArrayList();stopStationsTrains = new ArrayList();String sql = select * from 车次所经车站;Connection conn = DB.getConnection();Statement sta = DB.getSta(conn);ResultSet rs = null;List thisTrainStations;List thisTrainDetails;try rs = sta.executeQuery(sql);while (rs.next() / 判断当前车次是否含有出发点和目的点,并存储int isHaveBoth = 1;int startID = 0;int stopID = 0;thisTrainStations = AllUsedTools.convertString(rs.getString(所经车站);thisTrainDetails = new ArrayList();for (int i = 0; i thisTrainStations.size(); i+) if (thisTrainStations.get(i).equals(startText) isHaveBoth = isHaveBoth + 1;startID = i;if (thisTrainStations.get(i).equals(stopText) isHaveBoth = isHaveBoth + 2;stopID = i;if (isHaveBoth = 2) / 将车次名称添加到车次详情中的第0个元素thisTrainDetails.add(0, rs.getString(车次)+ +startID);thisTrainDetails.addAll(thisTrainStations);startStationsTrains.add(thisTrainDetails);if (isHaveBoth = 4) / 将车次名称添加到车次详情中的第0个元素thisTrainDetails.add(0, rs.getString(车次) + + startID+ + stopID);if (startID stopID) / 如果终点站在出发站后面则添加thisTrainDetails.addAll(thisTrainStations);startStopStationsTrains.add(thisTrainDetails);if (isHaveBoth = 3) / 将车次名称添加到车次详情中的第0个元素thisTrainDetails.add(0, rs.getString(车次) + + stopID);thisTrainDetails.addAll(thisTrainStations);stopStationsTrains.add(thisTrainDetails); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();stationsTrains.add(0, startStationsTrains);stationsTrains.add(1, startStopStationsTrains);stationsTrains.add(2, stopStationsTrains);stationsTrains = setStationsTrainsOrder(stationsTrains);/ 执行排序return stationsTrains;SuppressWarnings(unchecked)/返回方案listpublic List getWaysList(List s) List waysList = new ArrayList();/ 定义方案list/ 返回所有换乘方案List startStopTrains = (List) s.get(1);List startTrains = (List) s.get(0);List stopTrains = (List) s.get(2);if (startStopTrains.size() != 0) / 如果存在直达的车次for(int i = 0; i startStopTrains.size(); i+)List startStopTrain = (List) startStopTrains.get(i);String trainNum = (List)AllUsedTools.convertString(startStopTrain.get(0).get(0);int startInt = Integer.parseInt(List)AllUsedTools.convertString(startStopTrain.get(0).get(1);int stopInt = Integer.parseInt(List)AllUsedTools.convertString(startStopTrain.get(0).get(2);/将当前可以直接到达的车次添加到方案list中:(车次名称 始发站名称 终点站名称) 之间用空格隔开waysList.add(trainNum+ +startStopTrain.get(startInt+1)+ +startStopTrain.get(stopInt+1);int j = startInt + 2;/将车站指针定位到出发站的下一站while(j stopInt + 1)/定义循环从出发站的下一站开始到终点站的前一站结束String betweenStation = startStopTrain.get(j);/从比较车次中得到要比较的车站/对含有出发站终点站的车次进行比对int m = i + 1;while(m startStopTrains.size()/循环得到被比较车次List comparedTrain = (List) startStopTrains.get(m);/提取被比较车次listString comparedNum = (List)AllUsedTools.convertString(comparedTrain.get(0).get(0);for(int

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论