




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
地理信息系統(tǒng)畢業(yè)論文題目:基于Gis的火車換乘系統(tǒng)專業(yè):地理信息系統(tǒng)摘要自中國改革開放以來我國經(jīng)濟(jì)取得了長足的進(jìn)步,為了適應(yīng)國家經(jīng)濟(jì)的快速開展,我國正在大力進(jìn)行鐵路建設(shè)。然而隨著我國鐵路的快速開展給我們出行帶來了無限便利的同時,我們在選擇出行路線的時候也面臨著很多困難,是選擇最快的呢?還是選擇最舒適,經(jīng)濟(jì)的呢?面對這樣的問題本系統(tǒng)給出了很好的解決方法,幫助用戶選擇更為適宜的出行方案。系統(tǒng)采用ArcEngine在JAVA環(huán)境下實現(xiàn),所用平臺為Eclipse。在本系統(tǒng)當(dāng)中,用戶可以可視化的了解所關(guān)注車次、車站的詳細(xì)信息。本論文結(jié)合開發(fā)軟件的全過程,先介紹系統(tǒng)開發(fā)的背景環(huán)境;接著對數(shù)據(jù)的來源和建立進(jìn)行論述包括根底數(shù)據(jù)的創(chuàng)立和網(wǎng)絡(luò)數(shù)據(jù)的創(chuàng)立以及數(shù)據(jù)庫的設(shè)計和建立;然后詳細(xì)描述了軟件的實現(xiàn)思路、軟件的層次結(jié)構(gòu)設(shè)計、功能模塊設(shè)計、以及如何實現(xiàn)、組織各個功能模塊;最后附上實現(xiàn)各個功能模塊的主要代碼。【關(guān)鍵字】ArcEngine、JAVA、火車換乘AbstractSinceChina'sreformandopeningupofChina'seconomicprogress,inordertomeetthecountry'srapideconomicdevelopment,Chinavigorouslyforrailwayconstruction.WiththerapiddevelopmentofChina'srailwaytoourunlimitedtravelconvenienceatthesametime,weselecttravelroutesarefacedwithmanydifficulties,istochoosethefastest?,orchoosethemostcomfortable,affordable?inthefaceofsuchproblemsthissystemgivesverygoodsolutions,helpuserschoosemoreappropriatetravelscheme.ThesystemusestheArcEngineinaJavaenvironment,platformforEclipse.Inthissystem,userscanvisuallyunderstandconcernstrain,stationdetails.Thispapercombinedwiththewholeprocessofdevelopingsoftware,firstsystemdevelopmentbackgroundenvironment;thenonthedatasourceandestablisharediscussedinthebasicdatacreationandthecreationofthenetworkdata,anddatabasedesignandsetup;andadetaileddescriptionofthesoftwareimplementationideas,softwaredesign,thehierarchyoffunctionalitytodesign,implement,organizefunctionmodule;lastaccompaniedbyimplementationofthevariousmodulesofthemaincode.[keywords]ArcEngine、JAVA、TrainTransfer目錄TOC\o"3-3"\h\z\t"my1,1,my2,2,my3,3"1緒論 61.1引言 61.2設(shè)計論文背景 61.3火車換乘系統(tǒng)的意義 61.4火車換乘系統(tǒng)的關(guān)鍵技術(shù) 71.4.1GIS技術(shù) 7組件式GIS 7數(shù)據(jù)庫技術(shù) 81.5系統(tǒng)開發(fā)中解決的問題 81.6系統(tǒng)開發(fā)的主要路線 81.7論文主要的研究內(nèi)容 92根底數(shù)據(jù)的處理流程 92.1數(shù)據(jù)來源 92.2網(wǎng)絡(luò)數(shù)據(jù)集的建立 9根底圖層 92.2.2創(chuàng)立網(wǎng)絡(luò)數(shù)據(jù)集 11校驗網(wǎng)絡(luò)數(shù)據(jù)集的可用性 142.4本章總結(jié) 153火車換乘系統(tǒng)的設(shè)計 163.1系統(tǒng)開發(fā)平臺設(shè)計 163.1.1GIS系統(tǒng)平臺 16系統(tǒng)開發(fā)語言 16數(shù)據(jù)庫平臺 17系統(tǒng)運行平臺 173.2系統(tǒng)數(shù)據(jù)層次結(jié)構(gòu)搭建 17系統(tǒng)結(jié)構(gòu) 17系統(tǒng)空間數(shù)據(jù) 17系統(tǒng)屬性數(shù)據(jù) 183.3系統(tǒng)的組織結(jié)構(gòu)與實現(xiàn)思路 193.4本章總結(jié) 214火車換乘系統(tǒng)的實現(xiàn) 224.1系統(tǒng)概述 224.2系統(tǒng)界面 224.3功能模塊論述 23車次查詢 23車站查詢 24按路徑查詢 24高級 274.3.5地圖工具 284.4本章總結(jié) 305總結(jié)與展望 315.1論文研究成果 315.2論文的缺乏及進(jìn)一步工作展望 31致謝 32參考文獻(xiàn) 33附錄(一)主要程序代碼 341緒論1.1引言鐵路建設(shè)的積極推進(jìn),更多的火車車次和鐵路運輸線投入到使用當(dāng)中。而且隨著現(xiàn)代化工業(yè)開展的有力步伐,也涌現(xiàn)出了很多不同種類的火車出行方式。最近的高速鐵路、省會直達(dá)都是令人振奮的消息,這樣我們出行就有了更多的選擇方式,而這僅僅是針對我們的火車。這就為出行者帶來了一定的困擾尤其是在像鄭州、北京、上海等城市有眾多的鐵路線在這里交匯,從出發(fā)點可以到達(dá)目的地的火車有十幾條之多,然而如何能在有限的時間內(nèi)選擇出我們最正確的出行路線呢?現(xiàn)在是信息化時代,在多源化的鐵路信息中我們?nèi)绾稳フ纤麄儾⒂行У丶右越M織利用成了關(guān)鍵性的問題。而隨著GIS的開展將GIS運用到火車出行系統(tǒng)當(dāng)中,更能解決很多的出行選擇難題。同時能夠有效地組織各種信息數(shù)據(jù),使它真正能夠為我們出行效勞。1.2設(shè)計論文背景目前很多有很多的火車查詢軟件包括網(wǎng)絡(luò)上的,然而其中的大局部都只是簡單的時間數(shù)據(jù)庫查詢,就是簡單的火車時刻表的查詢。對于很多用戶在日常生活中遇到的問題不能很好的解決,更不能實現(xiàn)火車的換乘查詢,也不能將火車信息可視化的顯示在地圖當(dāng)中。這就嚴(yán)重的影響了用戶使用軟件的效果。例如某個火車查詢網(wǎng)站提供應(yīng)用戶三種火車查詢的方法車站查詢、車次查詢、出發(fā)地目的地查詢這三種查詢方式。每次的查詢都是只將根本的火車信息全部羅列在用戶面前,而太多的數(shù)據(jù)并不是用戶關(guān)心的數(shù)據(jù),并且系統(tǒng)也沒有給用戶提供自定義查詢的接口從而縮小查詢的范圍使用戶更容易的得到所關(guān)心的數(shù)據(jù)。并且由于種種限制也不能將有效的數(shù)據(jù)實時的以可視化的方式呈現(xiàn)在用戶面前,使用戶在查詢時還要逐一篩選。這只是其中的一個問題,而本系統(tǒng)將會一一解決這樣的問題。1.3火車換乘系統(tǒng)的意義火車出行是一個十分重要的問題,如果沒有選擇合理的出行路線方案,不但可能給出行者帶來不便,也可能由于大量出行人員由于沒有合理的選擇出行路線而造成火車的某一車次運力壓力過大等種種情況而這都是需要我們加以重視的。面對用戶存在種種困惑,本系統(tǒng)將以更加人性化的方式、更直觀的方式式將用戶所關(guān)心的問題逐一解決。1.4火車換乘系統(tǒng)的關(guān)鍵技術(shù)GIS技術(shù)地理信息系統(tǒng)〔GeographicInformationSystem,簡稱GIS〕作為獲取、存儲、分析和管理地理空間數(shù)據(jù)的重要工具、技術(shù)和學(xué)科,近年來得到了廣泛關(guān)注和迅猛開展。由于信息技術(shù)的開展,數(shù)字時代的來臨,理論上來說,GIS可以運用于現(xiàn)階段任何行業(yè)。GIS經(jīng)過了40年的開展,到今天已經(jīng)逐漸成為一門相當(dāng)成熟的技術(shù),并且得到了極廣泛的應(yīng)用。尤其是近些年,GIS更以其強(qiáng)大的地理信息空間分析功能,在GPS及路徑優(yōu)化中發(fā)揮著越來越重要的作用。GIS地理信息系統(tǒng)是以地理空間數(shù)據(jù)庫為根底,在計算機(jī)軟硬件的支持下,運用系統(tǒng)工程和信息科學(xué)的理論,科學(xué)管理和綜合分析具有空間內(nèi)涵的地理數(shù)據(jù),以提供管理、決策等所需信息的技術(shù)系統(tǒng)。簡單的說,地理信息系統(tǒng)就是綜合處理和分析地理空間數(shù)據(jù)的一種技術(shù)系統(tǒng)。組件式GIS組件式GIS是面向?qū)ο蠹夹g(shù)和組件技術(shù)在GIS軟件技術(shù)開發(fā)中的應(yīng)用。組件式GIS控件與其他軟件通過標(biāo)準(zhǔn)接口進(jìn)行通信,實現(xiàn)跨程序、跨計算機(jī)、跨網(wǎng)絡(luò)的分布式操作。同傳統(tǒng)的GIS相比擬,它具有多方面的特點,包括:無縫集成、跨語言使用、易于推廣、開發(fā)簡捷、使用方便、本錢低、可視化界面設(shè)計以及Internet應(yīng)用等。組件式GIS的根本思想是把GIS的各大功能模塊劃分為幾個控件,每個控件完成不同的功能。各個GIS控件之間,以及GIS控件與其它非GIS控件之間,可以方便地通過可視化的軟件開發(fā)工具集成起來,形成最終的GIS應(yīng)用[6]。控件如同一堆各式各樣的積木,他們分別實現(xiàn)不同的功能(包括GIS和非GIS功能),根據(jù)需要把實現(xiàn)各種功能的“積木〞搭建起來,就構(gòu)成應(yīng)用系統(tǒng)。數(shù)據(jù)庫技術(shù)本系統(tǒng)使用Access數(shù)據(jù)路軟件,Access是微軟公司推出的基于Windows的桌面關(guān)系數(shù)據(jù)庫管理系統(tǒng)〔RDBMS,即RelationalDatabaseManagementSystem〕,是Office系列應(yīng)用軟件之一。它提供了表、查詢、窗體、報表、頁、宏、模塊7種用來建立數(shù)據(jù)庫系統(tǒng)的對象;提供了多種向?qū)А⑸善鳌⒛0澹褦?shù)據(jù)存儲、數(shù)據(jù)查詢、界面設(shè)計、報表生成等操作標(biāo)準(zhǔn)化;為建立功能完善的數(shù)據(jù)庫管理系統(tǒng)提供了方便,也使得普通用戶不必編寫代碼,就可以完成大局部數(shù)據(jù)管理的任務(wù)。Access管理的對象有表、查詢、窗體、報表、頁、宏和模塊,以上對象都存放在后綴為〔.mdb〕的數(shù)據(jù)庫文件中,便于用戶的操作和管理。Access是一個面向?qū)ο蟮拈_發(fā)工具,利用面向?qū)ο蟮姆绞綄?shù)據(jù)庫系統(tǒng)中的各種功能對象化,將數(shù)據(jù)庫管理的各種功能封裝在各類對象中。它將一個應(yīng)用系統(tǒng)當(dāng)作是由一系列對象組成的,對每個對象它都定義一組方法和屬性,以定義該對象的行為和外觀,用戶還可以按需要給對象擴(kuò)展方法和屬性。通過對象的方法、屬性完成數(shù)據(jù)庫的操作和管理,極大地簡化了用戶的開發(fā)工作。1.5系統(tǒng)開發(fā)中解決的問題本系統(tǒng)開發(fā)中主要解決一下幾個方面的問題建立全國主要鐵路干線和主要地級市的網(wǎng)絡(luò)數(shù)據(jù)集。實現(xiàn)基于網(wǎng)絡(luò)圖層和要素圖層模糊查詢、點選查詢以及數(shù)據(jù)庫的屬性查詢。實現(xiàn)用戶的自定義查詢。實現(xiàn)火車換乘查詢,地圖上實時動態(tài)顯示。1.6系統(tǒng)開發(fā)的主要路線本系統(tǒng)以全國的主要鐵路干線為研究對象,采用JAVA語言結(jié)合GIS二次開發(fā)平臺在GIS空間數(shù)據(jù)和Access屬性數(shù)據(jù)庫的根底之上制作可視火車換乘系統(tǒng)。系統(tǒng)在JAVA環(huán)境下引入AE類庫實現(xiàn)對AE類庫的調(diào)用,并通過JAVA的ODBC.JDBC實現(xiàn)對Access數(shù)據(jù)庫的操作,從而實現(xiàn)屬性數(shù)據(jù)和空間數(shù)據(jù)的聯(lián)動操作。從應(yīng)用程序的用戶接口得到關(guān)鍵信息,通過JAVA語言的處理將信息調(diào)入ArcEngine的類庫和Access數(shù)據(jù)庫進(jìn)行處理并將結(jié)果反響到用戶界面,從而實現(xiàn)可視化的火車信息查詢、車站查詢和換乘查詢。對數(shù)據(jù)庫的更新功能主要是對Access數(shù)據(jù)庫的關(guān)于火車車次和站點的添加、編輯的操作。1.7論文主要的研究內(nèi)容本論文主要是對系統(tǒng)設(shè)計和建立整個過程的具體描述1)闡述系統(tǒng)開發(fā)的主要背景和研究目的,以及系統(tǒng)能夠解決的問題和系統(tǒng)建立的思路。2)闡述系統(tǒng)所涉及的根底數(shù)據(jù)、網(wǎng)絡(luò)數(shù)據(jù)和屬性數(shù)據(jù)的建立和組織的詳細(xì)過程。3)對系統(tǒng)的各個功能模塊的簡單闡述。4)闡述系統(tǒng)中存在的缺乏和缺點,同時也提出了解決方法和對未來的展望。5)提供系統(tǒng)開發(fā)的主要代碼,以供以后的研究和使用。2根底數(shù)據(jù)的處理流程2.1數(shù)據(jù)來源從國家地理信息系統(tǒng)數(shù)據(jù)網(wǎng)站上下載國家1:400萬主要的鐵路干線的根底數(shù)據(jù)和省界數(shù)據(jù)以及主要地級市居民點數(shù)據(jù)shp格式。屬性數(shù)據(jù)主要通過上網(wǎng)查詢火車信息并手動錄入數(shù)據(jù)庫。2.2網(wǎng)絡(luò)數(shù)據(jù)集的建立根底圖層(1)主要城市點居民點圖層、主要鐵路干線圖層、省界線圖層、省面圖層如圖—2-1所示:圖—2-1鐵路網(wǎng)數(shù)據(jù)圖(2)翻開ArcMap,翻開工具箱,選擇DataManageMentTools選擇ProjectionsandTransformations工具,轉(zhuǎn)換圖層的坐標(biāo)系統(tǒng),并統(tǒng)一為WGS1984投影坐標(biāo)系統(tǒng)單位為米如圖—2-2所示圖—2-2根底數(shù)據(jù)圖層坐標(biāo)系統(tǒng)2.2.2創(chuàng)立網(wǎng)絡(luò)數(shù)據(jù)集在主要鐵路線和地級市居民點的根底之上制作網(wǎng)絡(luò)數(shù)據(jù)集(1)創(chuàng)立地籍?dāng)?shù)據(jù)庫○1翻開Arccatalog在數(shù)據(jù)文件夾上單擊右鍵,新建personalGeodatabase命名為railway,如圖—2-3所示圖—2-3新建Geodatabase○2在railway數(shù)據(jù)庫上新建railwayfeaturedataset,如圖—2-3所示圖—2-3新建FeatureDataset○3將主要鐵路線和地級市居民點導(dǎo)入到railway要素集當(dāng)中,選擇采用網(wǎng)絡(luò)數(shù)據(jù)集的方式建立拓?fù)渚W(wǎng)絡(luò),選擇railway要素數(shù)據(jù)集單擊右鍵創(chuàng)立Networkdataset,如圖—2-4所示:圖—2-4新建網(wǎng)絡(luò)數(shù)據(jù)集校驗網(wǎng)絡(luò)數(shù)據(jù)集的可用性(1)翻開Arcmap,點擊菜單欄空白處選擇NetworkAnalyst工具條激活它,添加網(wǎng)絡(luò)數(shù)據(jù)集到Arcmap中如下列圖—2-5所示圖—2-5網(wǎng)絡(luò)數(shù)據(jù)集圖層(3)單擊NetworkAnalyst工具選擇NewRoute項,并在圖層列表中發(fā)現(xiàn)多出了RouteLayer圖層,單擊NetworkAnalyst工具條中的工具選擇兩個位置進(jìn)行最短路徑查詢,單擊工具顯示最短路徑如圖—2-6所示:圖—2-6測試網(wǎng)絡(luò)數(shù)據(jù)集2.4本章總結(jié)本章主要是描述在國家主要鐵路網(wǎng)的根底之上進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)集的建立過程。先對收集到的數(shù)據(jù)進(jìn)行初期的編輯處理,然后針對國家主要鐵路干線圖層進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)集的建立和校驗,網(wǎng)絡(luò)數(shù)據(jù)集是本系統(tǒng)的實現(xiàn)根底。3火車換乘系統(tǒng)的設(shè)計GIS火車換乘系統(tǒng)的建立是主要根據(jù)系統(tǒng)功能模塊的設(shè)想,系統(tǒng)遵循如下的總體設(shè)計。系統(tǒng)具體要實現(xiàn)的功能,具體化為數(shù)據(jù)庫的查詢要求、地圖的可視化要求、模糊查詢、點選查詢要求、根據(jù)條件實現(xiàn)數(shù)據(jù)庫與地圖的可視化聯(lián)動要求、最短路徑查詢。3.1系統(tǒng)開發(fā)平臺設(shè)計GIS系統(tǒng)平臺Arcgis作為GIS軟件平臺行業(yè)的領(lǐng)跑者,以她強(qiáng)大的功能一直備受行業(yè)人士的青睞。GIS火車換乘系統(tǒng)采用Arcgis的輕量級開發(fā)組件Arcengine,在ArcGIS9系列產(chǎn)品中,ArcGISDesktop、ArcGISEngine和ArcGISServer都是基于核心組件庫ArcObjects搭建。ArcObjects組件庫有3000多個對象可供開發(fā)人員調(diào)用,為開發(fā)人員集成了大量的GIS功能,可以快速的幫助開發(fā)人員進(jìn)行GIS工程的開發(fā)。ArcGISEngine開發(fā)包提供了一系列可以在ArcGISDesktop框架之外使用的GIS組件,ArcGISEngine的出現(xiàn)對于需要使用ArcObjects的開發(fā)人員來說是個福音,因為ArcGISEngine發(fā)布之前,基于ArcObjects的開發(fā)只能在龐大的ArcGISDesktop框架下進(jìn)行。.ArcEngine包括核心ArcObjects的功能,是對AO中的大局部接口、類等進(jìn)行封裝所構(gòu)成的嵌入式組件。2.AE中的組件接口、方法、屬性與AO是相同的。ArcEngine具有簡潔、靈活、易用、可移植性強(qiáng)等的特點。系統(tǒng)開發(fā)語言本系統(tǒng)采用Java語言進(jìn)行開發(fā),對于Java語言大家肯定最熟悉不過了。Java是一種簡單的,面向?qū)ο蟮模植际降模忉屝偷模哑桨驳模Y(jié)構(gòu)中立的,可移植的,性能優(yōu)異、多線程的動態(tài)語言。Java語言的語法與C語言和C++語言很接近,使得大多數(shù)程序員很容易學(xué)習(xí)和使用Java。另一方面,Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強(qiáng)制類型轉(zhuǎn)換。特別地,Java語言不使用指針,并提供了自動的廢料收集,使得程序員不必為內(nèi)存管理而擔(dān)憂。Java語言提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實現(xiàn)機(jī)制〔關(guān)鍵字為implements〕。Java語言全面支持動態(tài)綁定,而C++語言只對虛函數(shù)使用動態(tài)綁定。總之,Java語言是一個純的面向?qū)ο蟪绦蛟O(shè)計語言。Java語言也完全支持com組件機(jī)制,這就為和AE的結(jié)合打下了根底,ESRI公司推出的AEforJavaSDK這使得在JAVA環(huán)境下的GIS二次開發(fā)更為簡單方便。數(shù)據(jù)庫平臺Access管理的對象有表、查詢、窗體、報表、頁、宏和模塊,以上對象都存放在后綴為〔.mdb〕的數(shù)據(jù)庫文件中,便于用戶的操作和管理。GIS平臺Arcengine能夠良好的支持Access數(shù)據(jù)庫,Java語言在ODBC.JDBC的橋接模式下也能夠很好的支持Access數(shù)據(jù)庫。系統(tǒng)運行平臺本系統(tǒng)的運行環(huán)境為WinXP操作系統(tǒng),以及系統(tǒng)平臺要裝有JavaRuntime和ArcgisEngine9.2Runtime。3.2系統(tǒng)數(shù)據(jù)層次結(jié)構(gòu)搭建系統(tǒng)結(jié)構(gòu)在進(jìn)行數(shù)據(jù)庫設(shè)計時,通過數(shù)據(jù)分層、圖層管理、屬性編碼和空間索引設(shè)計,建立空間數(shù)據(jù)庫,然后進(jìn)行屬性數(shù)據(jù)庫設(shè)計,最后建立空間數(shù)據(jù)庫與屬性數(shù)據(jù)庫的連接關(guān)系。如圖—3-1所示GIS火車換乘系統(tǒng)GIS火車換乘系統(tǒng)屬性數(shù)據(jù)(Access)空間數(shù)據(jù)(Geodatabase)關(guān)鍵字火車站圖層;鐵路干線圖層;省界線圖層;省界面圖…層;車站詳情,車次所經(jīng)車站,Point屬性表JDBCArcGISengine9.2圖3-1:系統(tǒng)結(jié)構(gòu)圖系統(tǒng)空間數(shù)據(jù)空間數(shù)據(jù)是系統(tǒng)中GIS應(yīng)用環(huán)節(jié)的根底數(shù)據(jù),他的合理組織直接影響著系統(tǒng)的整體組成。本系統(tǒng)空間數(shù)據(jù)主要來自于國家1:400萬根底地理數(shù)據(jù),并選擇需要的存儲在四個圖層當(dāng)中分別是省界線圖層,省界面圖層、主要鐵路線圖層、地級市以上居民點圖層,每一個圖層都包含了圖層名稱、空間特性、屬性數(shù)據(jù)等數(shù)據(jù)。另外一局部是網(wǎng)絡(luò)數(shù)據(jù)集,它是存儲網(wǎng)絡(luò)拓?fù)湫畔⒌妮d體,通過國家主要鐵路創(chuàng)立而成的,也作為重要的空間數(shù)據(jù)存儲在數(shù)據(jù)庫中。系統(tǒng)屬性數(shù)據(jù)系統(tǒng)的屬性數(shù)據(jù)主要存儲在Access數(shù)據(jù)庫,分為三張表車次所經(jīng)車站表、車站詳情表、point屬性表〔數(shù)據(jù)處理階段的系統(tǒng)生成表〕因為在系統(tǒng)實現(xiàn)過程中,要實現(xiàn)最短路徑就必須要有可用的網(wǎng)絡(luò)節(jié)點存在在網(wǎng)絡(luò)數(shù)據(jù)上,然而個別的地級市居民點離網(wǎng)絡(luò)過遠(yuǎn)這樣就無法實現(xiàn)有效地最短路徑分析,只能通過居民點查找網(wǎng)絡(luò)節(jié)點,通過尋找最近設(shè)施點的方法將網(wǎng)絡(luò)節(jié)點和城市居民點一一對應(yīng),并作為火車站的位置,存儲在系統(tǒng)生成這張表中圖—3-2point屬性表圖—3-3車次所經(jīng)車站表圖—3-4車站詳情表3.3系統(tǒng)的組織結(jié)構(gòu)與實現(xiàn)思路GIS火車換乘系統(tǒng)主要實現(xiàn)火車的可視化查詢、火車信息的修改和用戶自定義最優(yōu)換乘方案查詢,用戶可以在看到查詢結(jié)果的同時看到具體的在地圖中的信息可視化顯示。為了實現(xiàn)設(shè)計的功能,主要有以下幾個模塊基于文本的火車站查詢,基于文本的車次查詢、基于文本的換乘方案查詢、用戶自定義換乘方案查詢、點選換乘方案查詢。如下列圖—3-5所示:結(jié)果用戶輸入車次名稱結(jié)果用戶輸入車次名稱彈出窗體顯示車次詳情地圖顯示本車次所經(jīng)車站,彈出窗口顯示車站詳情列表顯示所有乘坐方案,以表格形式顯示乘坐方案詳情,并排序。在地圖上顯示乘坐方案火車換乘系統(tǒng)路徑查詢車次查詢車站查詢高級用戶輸入車站名稱系統(tǒng)查找所經(jīng)車站系統(tǒng)查找車站詳情系統(tǒng)查找車次詳情系統(tǒng)查找所經(jīng)車次系統(tǒng)根據(jù)最短路徑在地圖中顯示出乘坐方案點擊車站名稱單擊某車次輸入出發(fā)站終點站在地圖圖上選擇輸入自定義選擇項:如價格系統(tǒng)查找所有乘坐方案系統(tǒng)查找并篩選方案單擊乘坐方案圖3—5系統(tǒng)實現(xiàn)思路3.4本章總結(jié)本章的主要內(nèi)容是基于GIS火車換乘系統(tǒng)的建立過程,在分析合理選用開發(fā)平臺、開發(fā)方式、開發(fā)語言和數(shù)據(jù)庫的根底上,以全國主要鐵路線為例,探討了基于ArcEngine的火車換乘系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的建立:空間數(shù)據(jù)和屬性數(shù)據(jù),并給出了系統(tǒng)開發(fā)組織結(jié)構(gòu)和系統(tǒng)實現(xiàn)的根本功能。4火車換乘系統(tǒng)的實現(xiàn)4.1系統(tǒng)概述本系統(tǒng)以中國主要鐵路干線作為研究對象,利用已有的中國鐵路網(wǎng)圖層,結(jié)合地級市居民點圖層數(shù)據(jù)、網(wǎng)上搜集的火車站、火車車次信息等,開發(fā)了一個基于ArcEngine的GIS火車換乘系統(tǒng)。系統(tǒng)的軟件設(shè)計采用Java作為可視化編程工具,結(jié)合ArcEngine9.2進(jìn)行開發(fā)。在Java環(huán)境下通過JDBC.ODBC與Access數(shù)據(jù)庫連接,用SQL語句訪問表中的數(shù)據(jù),實現(xiàn)對火車信息的管理。利用ArcEngine組件提供的各種屬性、方法和工具,能夠進(jìn)行空間數(shù)據(jù)獲取、數(shù)據(jù)查詢、數(shù)據(jù)分析等操作,從而實現(xiàn)對鐵路網(wǎng)絡(luò)信息數(shù)據(jù)的管理。4.2系統(tǒng)界面系統(tǒng)主要有菜單欄、工具欄、查詢頁簽、結(jié)果頁簽、高級頁簽組成和圖形窗口組成。系統(tǒng)界面設(shè)計人性化,并可以自由更換主題,更方便了用戶使用。如圖4—1所示圖4—1系統(tǒng)主界面4.3功能模塊論述車次查詢翻開主頁面點擊車次查詢單項選擇按鈕,在車次文本框中輸入要查詢的車次號,然后點擊查詢,如圖4—2所示:圖4—2車次查詢在結(jié)果頁簽當(dāng)中,將所有結(jié)果依照次序羅列出來,我們點擊第十站鄭州查看詳情如圖4—3所示:圖—4-3車次查詢結(jié)果可以看到當(dāng)前車次,到達(dá)鄭州的時間、出站時間本車次是否有硬座、軟座等信息。4.3.2車站查詢單擊車站查詢單項選擇按鈕,輸入要查詢的車站名稱:此處我們以寶雞為例,在查詢結(jié)果的車次列表上我們單擊1046次列車會彈出1046次列車的詳細(xì)信息如圖—4-4所示:圖—4-4車站查詢結(jié)果按路徑查詢本模塊是本系統(tǒng)中主要的模塊。本模塊的實現(xiàn)思路:首先從用戶輸入得到出發(fā)站和終點站,以出發(fā)站和終點站為關(guān)鍵字在數(shù)據(jù)庫中車次所經(jīng)車站表進(jìn)行遍歷。將所有含有出發(fā)站或者是終點站的車次分為只含有出發(fā)站的車次、只含有終點站的車次、既有出發(fā)站又有終點站的車次并分別存儲在list1、list2、list3中,然后對每一個list分別按照相應(yīng)的條件進(jìn)行排序并。將新的list1從出發(fā)站開始每次增加一個站點向下進(jìn)行循環(huán)并分別對list2、list3進(jìn)行比對如果list2或list3中含有當(dāng)前循環(huán)的站點那么將當(dāng)前站點作為中轉(zhuǎn)站以當(dāng)前l(fā)ist1中的車次作為中轉(zhuǎn)前車次、以list2或list3中的車次作為中轉(zhuǎn)后車次存儲在方案列表中。以這樣的方法分別對list3進(jìn)行遍歷。然后要實現(xiàn)車次路徑在地圖上顯示,有兩種途徑:(1):將每兩個相鄰火車站之間的鐵路線進(jìn)行命名,并存儲在圖層中,當(dāng)用戶點擊換乘方案時將當(dāng)前方案所經(jīng)過的所有鐵路線段的名稱查找出來,然后再到mapbean中一一顯示。這樣做顯然非常不適宜,數(shù)據(jù)處理的工作量比擬大。(2):也是本系統(tǒng)所采用的方法,得到方案所經(jīng)過的所有車站的名稱,并以這些車站作為最短路徑分析時的stops,這樣就查找出每兩個相鄰車站之間的路徑,并存儲在新的圖層中顯示在mapbean中。單擊按路徑查詢單項選擇按鈕,輸入出發(fā)站名稱和目的站名稱,單擊查詢按鈕:在結(jié)果頁簽中顯示所有換乘方案。單擊能夠直接到達(dá)的換乘方案返回路徑到mapbean中如圖—4-5所示:圖—4-5直接到達(dá)方案單擊需要換乘的方案如圖—4-6所示:圖—4-6需要換乘的方案返回?fù)Q乘路徑,在地圖窗口中顯示,并且氣泡窗口會在出發(fā)站、換乘站和終點站處進(jìn)行提示方便用戶進(jìn)行查看。高級單擊高級頁簽,輸入出發(fā)站和終點站,選擇并輸入到站時間段、車次類型等信息。點擊查詢,所有方案存儲在表格當(dāng)中,表格某一行在地圖中顯示當(dāng)前換乘路徑,并彈出路程長度如圖—4-7所示。圖—4-7高級查詢結(jié)果在查詢結(jié)果的表格中單擊全程時間或者硬座價格等列的表頭或分別按照升序或者降序進(jìn)行排列顯示。注:全程時間為從出發(fā)站到換乘站、在換乘站等待換乘時間、從換乘站到終點站時間之和。價格為零表示此車次沒有此類座位如圖—4-8所示。圖—4-8方案排序地圖工具(1)點擊工具欄中測量距離工具,在map中單擊左鍵選擇端點后,單擊右鍵計算距離如圖—4-9所示圖—4-9測量結(jié)果(2)單擊工具欄中周邊查詢工具,然后輸入緩沖區(qū)距離,查找出當(dāng)前距離范圍內(nèi)的所有火車站,如圖—4-10所示圖—4-10周邊查詢結(jié)果(3)單擊菜單欄中的選擇窗口菜單,選擇顯示鷹眼如圖—4-11。圖—4-11鷹眼(4)單擊菜單欄中的圖上選擇,分別選擇矩形查詢、圓形查詢,進(jìn)行空間查詢圖—4-12查詢方式圖—4-13矩形框查詢圖—4-14圓形框查詢單擊主題選擇菜單,用戶可以選擇適宜的界面風(fēng)格如圖4—15所示:圖—4-15主題風(fēng)格選擇4.4本章總結(jié)本章的主要內(nèi)容是GIS火車換乘系統(tǒng)的開發(fā)與集成,主要包括系統(tǒng)概述,系統(tǒng)界面以及功能模塊的實現(xiàn)。在功能實現(xiàn)局部,本系統(tǒng)主要實現(xiàn)了車次查詢、車站查詢、路徑查詢、周邊查詢、測量距離等功能。5總結(jié)與展望5.1論文研究成果本系統(tǒng)以全國鐵路干線為研究對象,從GIS過車換乘系統(tǒng)的關(guān)鍵技術(shù)、根底數(shù)據(jù)的獲取和建立、數(shù)據(jù)庫的建立等幾個方面著手,初步分析研究了火車換乘的方法、空間數(shù)據(jù)和屬性數(shù)據(jù)的關(guān)聯(lián)以及系統(tǒng)平臺的建立。利用已有的全國鐵路網(wǎng)地圖,結(jié)合網(wǎng)上搜集的火車車次信息等,利用java結(jié)合ArcEngine9.2平臺建立火車換乘系統(tǒng)。該系統(tǒng)可以脫離相關(guān)GIS軟件獨立運行,主要包括地圖操作、車次查詢、車站查詢、路徑查詢、周邊查詢、測量距離等功能模塊,實現(xiàn)了較為簡單的GIS火車換乘系統(tǒng)。對GIS火車換乘系統(tǒng)中的相關(guān)技術(shù),從理論到實踐進(jìn)行了一系列根底性及實驗性的研究,主要工作有:(1)對二維空間查詢分析技術(shù)進(jìn)行了研究,實現(xiàn)了地圖點狀緩沖區(qū)查詢查詢、圓形查詢、框選查詢、測距等功能。(2)實現(xiàn)了火車換乘的根本查詢功能,包括:車站查詢、車次查詢。(3)實現(xiàn)了可視化的火車換乘查詢。5.2論文的缺乏及進(jìn)一步工作展望由于作者能力所限,就本文GIS火車換乘系統(tǒng)研究而言,還有一些需要改良和提高的地方,具體如下:(1)系統(tǒng)實用性:本系統(tǒng)采用的是單機(jī)模式,還不能和Internet進(jìn)行實時的傳遞數(shù)據(jù),本系統(tǒng)應(yīng)該采用網(wǎng)站的形式進(jìn)行開發(fā),不但可以讓本系統(tǒng)更好的效勞于群眾,也能夠?qū)崟r的更新火車信息數(shù)據(jù)。(2)系統(tǒng)的交互性:本系統(tǒng)僅完成了局部內(nèi)容并且所做的工作有限,交互性不強(qiáng)。(3)系統(tǒng)的優(yōu)化:應(yīng)在數(shù)據(jù)處理上更加精細(xì),使系統(tǒng)反響時間加快。(4)系統(tǒng)的功能:Arcengine9.2為我們提供了豐富的編程接口,很多有用的功能本系統(tǒng)沒有實現(xiàn),比方地圖編輯、屬性數(shù)據(jù)更新的功能。致謝在即將畢業(yè)之際,我首先要向我的指導(dǎo)老師李老師致以最誠摯的感謝。本論文的研究工作是在導(dǎo)師的關(guān)心和指導(dǎo)下完成的。從論文選題到撰寫完成的整個過程,李老師屢次提出珍貴意見并給予指導(dǎo)才使得系統(tǒng)能夠圓滿完成。在課題研究期間,李同學(xué)給予了珍貴意見,使得自己在不斷的學(xué)習(xí)探討中,取得了不小的進(jìn)步,在此也表示衷心的感謝!同時在系統(tǒng)的開發(fā)中參考了網(wǎng)上的大量實例,對我?guī)椭葦M大,在此我感謝ERSI社區(qū)論壇上的諸多幫助過我的人。感謝在大學(xué)四年來傳授給我知識的地理信息系統(tǒng)教研室全體老師們,正是他們使我學(xué)到了許多珍貴的知識并擁有了不懈的動力!最后我對所有關(guān)心我、支持我的同學(xué)們、朋友們表示感謝!參考文獻(xiàn)[1]蘭小機(jī),劉德兒.ArcobjectsGIS應(yīng)用開發(fā)__基于C#.NET.2006年9月[2]湯國安,楊昕.ArcGIS地理信息系統(tǒng)空間分析實驗教程.2006年1月[3]BruceEckel.thinkinginjava4.2006年2月[4]涂超.泉州市電子地圖及其公交查詢功能的實現(xiàn).蘇州科技學(xué)院學(xué)報(工程技術(shù)版).2006年6月[5]金永超.基于GIS的公交綜合信息平臺研究與設(shè)計.2007年10月.碩士論文[6]張榮梅.智能交通地理信息系統(tǒng)的設(shè)計與實現(xiàn).計算機(jī)應(yīng)用研究,2000年[7]羅雄.使用.NET或JAVA進(jìn)行Arcengine開發(fā),2021年4月[8]欒軍.鐵路物資管理信息系統(tǒng).2007年12月[9]甘仞初.信息系統(tǒng)開發(fā).2007年5月[10]陳述彭.城市化與城市地理信息系統(tǒng)2000年3月[11]謝昆青.空間數(shù)據(jù)庫.2004年1月[12]程雄,王紅.GIS軟件應(yīng)用--AEC/INFO軟件操作與應(yīng)用.2004年6月附錄(一)主要程序代碼加載數(shù)據(jù)主要代碼publicclassMySource{ StringpPath; IWorkspaceFactorypWorksapceFactory;//創(chuàng)立工作空間工廠 publicIFeatureWorkspacepFeatureWorkspace;//定義工作空間 IFeatureClasscityFeatureClass; IFeatureClassrailwayFeatureClass; IFeatureClassnetFeatureClass; IFeatureClassjunctionFeatureClass; IFeatureClasslineFeatureClass; IFeatureClassmianFeatureClass; publicMySource(StringpPath){ super(); this.pPath=pPath; try{ pWorksapceFactory=newAccessWorkspaceFactory(); pFeatureWorkspace=(IFeatureWorkspace)pWorksapceFactory .openFromFile(pPath,0); }catch(UnknownHostExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } } publicIFeatureClassgetCityFeatureClass(){//得到地級市居民點的要素類 try{ cityFeatureClass=pFeatureWorkspace.openFeatureClass("地市級居點"); }catch(AutomationExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returncityFeatureClass; }publicIFeatureClassgetRailwayFeatureClass(){ try{ railwayFeatureClass=pFeatureWorkspace.openFeatureClass("主要鐵路"); }catch(AutomationExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnrailwayFeatureClass;}publicIFeatureClassgetJunctionFeatureClass(){ try{ junctionFeatureClass=pFeatureWorkspace.openFeatureClass("railway_ND_Junctions"); }catch(AutomationExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnjunctionFeatureClass;}publicIFeatureClassgetLineFeatureClass(){ try{ lineFeatureClass=pFeatureWorkspace.openFeatureClass("省界線"); }catch(AutomationExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnlineFeatureClass;}publicIFeatureClassgetMianFeatureClass(){ try{ mianFeatureClass=pFeatureWorkspace.openFeatureClass("省界面"); }catch(AutomationExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }catch(IOExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } returnmianFeatureClass;}}獲得路徑方案模塊: publicList<Object>getStationsTrains(){ List<Object>stationsTrains; stationsTrains=newArrayList<Object>(); List<Object>startStopStationsTrains;//定義含有出發(fā)點又含有結(jié)束點的車次list List<Object>startStationsTrains;//含有出發(fā)點的列車 List<Object>stopStationsTrains;//含有終點站的列車 startStopStationsTrains=newArrayList<Object>(); startStationsTrains=newArrayList<Object>(); stopStationsTrains=newArrayList<Object>(); Stringsql="select*from車次所經(jīng)車站"; Connectionconn=DB.getConnection(); Statementsta=DB.getSta(conn); ResultSetrs=null; List<String>thisTrainStations; List<String>thisTrainDetails; try{ rs=sta.executeQuery(sql); while(rs.next()){//判斷當(dāng)前車次是否含有出發(fā)點和目的點,并存儲 intisHaveBoth=1; intstartID=0; intstopID=0; thisTrainStations=AllUsedTools.convertString(rs.getString("所經(jīng)車站")); thisTrainDetails=newArrayList<String>(); for(inti=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){//如果終點站在出發(fā)站后面那么添加 thisTrainDetails.addAll(thisTrainStations); startStopStationsTrains.add(thisTrainDetails); } } if(isHaveBoth==3){ //將車次名稱添加到車次詳情中的第0個元素 thisTrainDetails.add(0,rs.getString("車次")+""+stopID); thisTrainDetails.addAll(thisTrainStations); stopStationsTrains.add(thisTrainDetails); } } }catch(SQLExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); } stationsTrains.add(0,startStationsTrains); stationsTrains.add(1,startStopStationsTrains); stationsTrains.add(2,stopStationsTrains); stationsTrains=setStationsTrainsOrder(stationsTrains);//執(zhí)行排序 returnstationsTrains; } @SuppressWarnings("unchecked") //返回方案list publicList<String>getWaysList(List<Object>s){ List<String>waysList=newArrayList<String>();//定義方案list //返回所有換乘方案 List<Object>startStopTrains=(List<Object>)s.get(1); List<Object>startTrains=(List<Object>)s.get(0); List<Object>stopTrains=(List<Object>)s.get(2); if(startStopTrains.size()!=0){//如果存在直達(dá)的車次 for(inti=0;i<startStopTrains.size();i++){ List<String>startStopTrain=(List<String>)startStopTrains.get(i); StringtrainNum=((List<String>)AllUsedTools.convertString(startStopTrain.get(0))).get(0); intstartInt=Integer.parseInt(((List<String>)AllUsedTools.convertString(startStopTrain.get(0))).get(1)); intstopInt=Integer.parseInt(((List<String>)AllUsedTools.convertString(startStopTrain.get(0))).get(2)); //將當(dāng)前可以直接到達(dá)的車次添加到方案list中:〔車次名稱始發(fā)站名稱終點站名稱〕之間用空格隔開 waysList.add(trainNum+""+startStopTrain.get(startInt+1)+""+startStopTrain.get(stopInt+1)); intj=startInt+2;//將車站指針定位到出發(fā)站的下一站 while(j<stopInt+1){//定義循環(huán)從出發(fā)站的下一站開始到終點站的前一站結(jié)束 StringbetweenStation=startStopTrain.get(j);//從比擬車次中得到要比擬的車站 //對含有出發(fā)站終點站的車次進(jìn)行比對 intm=i+1; while(m<startStopTrains.size()){//循環(huán)得到被比擬車次 List<String>comparedTrain=(List<String>)startStopTrains.get(m);//提取被比擬車次list StringcomparedNum=((List<String>)AllUsedTools.convertString(comparedTrain.get(0))).get(0); for(intn=0;n<comparedTrain.size();n++){//對當(dāng)前被比擬車次進(jìn)行循環(huán)查找 if(comparedTrain.get(n).equals(betweenStation)){ //在方案里表中添加:車次出發(fā)站中間站車次終點站 waysList.add(trainNum+""+startStopTrain.get(startInt+1)+""+betweenStation+""+comparedNum+""+startStopTrain.get(stopInt+1)); } } m++; } //對含有終點站的車次進(jìn)行比對 inth=0; while(h<stopTrains.size()){//如果存在只含有終點站的車次那么進(jìn)行比對 List<String>stopTrain=(List<String>)stopTrains.get(h); StringstopNum=((List<String>)AllUsedTools.convertString(stopTrain.get(0))).get(0); intthisStopInt=Integer.parseInt(((List<String>)AllUsedTools.convertString(stopTrain.get(0))).get(1)); for(intg=0;g<thisStopInt+1;g++){ if(stopTrain.get(g).equals(betweenStation)){ waysList.add(trainNum+""+startStopTrain.get(startInt+1)+""+betweenStation+""+stopNum+""+startStopTrain.get(stopInt+1)); } } h++; } j++; } } } //假設(shè)果存在含有出發(fā)站的車次 if(startTrains.size()!=0){ for(inti=0;i<startTrains.size();i++){ List<String>startTrain=(List<String>)startTrains.get(i); StringtrainNum=((List<String>)AllUsedTools.convertString(startTrain.get(0))).get(0); intstartInt=Integer.parseInt(((List<String>)AllUsedTools.convertString(startTrain.get(0))).get(1)); intj=startInt+2;//將車站指針定位到出發(fā)站的下一站 while(j<startTrain.size()){//定義循環(huán)從出發(fā)站的下一站開始到列表的最后 StringbetweenStation=startTrain.get(j);//從比擬車次中得到要比擬的車站 //對含有出發(fā)站終點站的車次進(jìn)行比對 intm=0; while(m<startStopTrains.size()){//循環(huán)得到被比擬車次 List<String>comparedTrain=(List<String>)startStopTrains.get(m);//提取被比擬車次list StringcomparedNum=((List<String>)AllUsedTools.convertString(comparedTrain.get(0))).get(0); intstopInt=Integer.parseInt(((List<String>)AllUsedTools.convertString(comparedTrain.get(0))).get(2)); for(intn=0;n<stopInt+1;n++){//對當(dāng)前被計較車次進(jìn)行循環(huán)查找 if(comparedTrain.get(n).equals(betweenStation)){ //在方案里表中添加:車次出發(fā)站中間站車次終點站 waysList.add(trainNum+""+startTrain.get(startInt+1)+""+betweenStation+""+comparedNum+""+comparedTrain.get(stopInt+1)); } } m++; } //對含有終點站的車次進(jìn)行比對 inth=0; while(h<stopTrains.size()){//如果存在只含有終點站的車次那么進(jìn)行比對 List<String>stopTrain=(List<String>)stopTrains.get(h); StringstopNum=((List<String>)AllUsedTools.convertString(stopTrain.get(0))).get(0); intstopInt=Integer.parseInt(((List<String>)AllUsedTools.convertString(stopTrain.get(0))).get(1)); for(intg=0;g<stopInt+1;g++){ if(stopTrain.get(g).equals(betweenStation)){ waysList.add(trainNum+""+startTrain.get(startInt+1)+""+betweenStation+""+stopNum+""+stopTrain.get(stopInt+1)); } } h++; } j++; } } } returnwaysList; } @SuppressWarnings("unchecked") publicList<Object>setStationsTrainsOrder(List<Object>s){//根據(jù)stationsTrains中存儲的車次表中車次詳情表進(jìn)行排序 //對含有出發(fā)站的車次列表進(jìn)行排序 List<String>startsTransList=newArrayList<String>(); //List<Object> List<Object>stationsTrainsOrder=s; List<Object>starts=(List<Object>)stationsTrainsOrder.get(0);//得到有出發(fā)站的車次 for(inti=0;i<starts.size();i++){ for(intj=i+1;j<starts.size();j++){ //(List<String>)starts.get(j)是得到存儲車次詳情的list if(((List<String>)starts.get(i)).size()<((List<String>)starts.get(j)).size()){ startsTransList=(List<String>)starts.get(i); starts.set(i,(List<String>)starts.get(j));//交換位置 starts.set(j,startsTransList); } if(((List<String>)starts.get(i)).size()==((List<String>)starts.get(j)).size()){//如果所車站個數(shù)相同那么按照出發(fā)站的位置排序 List<String>a=AllUsedTools.convertString(((List<String>)starts.get(i)).get(0)); List<String>b=AllUsedTools.convertString(((List<String>)starts.get(j)).get(0)); inta1=Integer.parseInt(a.get(1)); intb1=Integer.parseInt(b.get(1)); if(b1>a1){ startsTransList=(List<String>)starts.get(i); starts.set(i,(List<String>)starts.get(j));//交換位置 starts.set(j,startsTransList); } } } } stationsTrainsOrder.set(0,starts); //對含有出發(fā)點和終點站的車次進(jìn)行排序 starts=(List<Object>)stationsTrainsOrder.get(1);//得到有出發(fā)站和終點站的車次 for(inti=0;i<starts.size();i++){ for(intj=i+1;j<starts.size();j++){ //(List<String>)starts.get(j)是得到存儲車次詳情的list List<String>s1=AllUsedTools.convertString(((List<String>)starts.get(i)).get(0));//將車次詳情list的第一行傳入 ints1Start=Integer.parseInt(s1.get(1)); ints1Stop=Integer.parseInt(s1.get(2)); List<String>s2=AllUsedTools.convertString(((List<String>)starts.get(j)).get(0));//將車次詳情list的第一行傳入 ints2Start=Integer.parseInt(s1.get(1)); ints2Stop=Integer.parseInt(s1.get(2)); //比擬兩個車次初始站和終點站之間的站數(shù),站多的排的靠前 if(s1Stop-s1Start>s2Stop-s2Start){ startsTransList=(List<String>)starts.get(i); starts.set(i,(List<String>)starts.get(j));//交換位置 starts.set(j,startsTransList); } //如果車站個數(shù)相同那么按照出發(fā)站的位置排序 if(s1Stop-s1Start==s2Stop-s2Start){ if(s2Start>s1Start){ startsTransList=(List<String>)starts.get(i); starts.set(i,(List<String>)starts.get(j));//交換位置 starts.set(j,startsTransList); } } } } stationsTrainsOrder.set(1,starts); //對含有終點站的車次進(jìn)行排序 starts=(List<Object>)stationsTrainsOrder.get(2);//得到有出發(fā)站和終點站的車次 for(inti=0;i<starts.size();i++){ for(intj=i+1;j<starts.size();j++){ //(List<String>)starts.get(j)是得到存儲車次詳情的list if(((List<String>)starts.get(i)).size()<((List<String>)starts.get(j)).size()){ startsTransList=(List<String>)starts.get(i); starts.set(i,(List<String>)starts.get(j));//交換位置 starts.set(j,startsTransList); } if(((List<String>)starts.get(i)).size()==((List<String>)starts.get(j)).size()){//如果所車站個數(shù)相同那么按照出發(fā)站的位置排序 List<String>a=AllUsedTools.convertString(((List<String>)starts.get(i)).get(0)); List<String>b=AllUsedTools.convertString(((List<String>)starts.get(j)).get(0)); inta1=Integer.parseInt(a.get(1)); intb1=Integer.parseInt(b.get(1)); if(a1>b1){ startsTransList=(List<String>)starts.get(i); starts.set(i,(List<String>)starts.get(j));//交換位置 starts.set(j,startsTransList); } } } } stationsTrainsOrder.set(2,starts); returnstationsTrainsOrder; } publicvoidloadNANetworkLocations(INAContextnaContext
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 非法占用車位賠償協(xié)議
- 游戲開發(fā)及運營協(xié)議
- 商業(yè)合作投資意向協(xié)議書規(guī)范
- 2025年社會心理學(xué)研究及實踐模擬試卷及答案
- 2025年網(wǎng)絡(luò)營銷與品牌推廣考試試題及答案
- 2025年社交媒體管理能力考試試卷及答案
- 2025年無線通信網(wǎng)絡(luò)相關(guān)考試試卷及答案
- 2025年國際貿(mào)易與投資實務(wù)考試試題及答案
- 2025年高爾夫教練職業(yè)資格考試試卷及答案
- 2025年經(jīng)濟(jì)法專業(yè)的國考真題及答案
- 成語故事《半途而廢》課件
- 2025年全國法制宣傳日普法知識競賽題庫及答案(共200題)
- 消防安裝工程重點難點分析及應(yīng)對措施
- 醫(yī)師人員管理制度內(nèi)容
- GB/T 44951-2024防彈材料及產(chǎn)品V50試驗方法
- 周轉(zhuǎn)輪系傳動比計算實例機(jī)械設(shè)計基礎(chǔ)課件講解
- 2024年公路水運工程試驗檢測師《橋梁隧道工程》考試題庫大全(含真題)-上(單選題)
- 弱電項目安全施工應(yīng)急預(yù)案(3篇)
- 【MOOC】信號與系統(tǒng)-南京郵電大學(xué) 中國大學(xué)慕課MOOC答案
- DB32T 2334.4-2013 水利工程施工質(zhì)量檢驗與評定規(guī)范 第4部分 電氣設(shè)備與自動化
- 導(dǎo)尿術(shù)課件完整版
評論
0/150
提交評論