柳春生,王科
(1.廣州市城市規劃勘測設計研究院,廣東 廣州 510060; 2.武漢大學遙感信息工程學院,湖北 武漢 430079)
隨著我國油氣工業的快速發展,油氣管道的建設速度日益加快。天然氣管道運輸企業主營業務是天然氣的管道運輸,輸氣、聯運的成本一直是天然氣輸送業務的最關鍵成本[1]。因此合理確定配送路線并制定最優管網路徑,能節約建設成本、運輸時間、減少運輸費用,提高天然氣運輸效率。
目前,GIS技術應用于最優路徑分析成為近幾年來研究的熱點和發展趨勢。某些管理部門以C#為開發語言,基于ArcEngine技術平臺,結合Dijkstra算法開發專用的最優路徑選取分析軟件。最短路徑算法主要分靜態最短路徑算法和動態最短路徑算法。靜態最短路徑主要有Dijkstra算法、Floyd算法[2]。動態最短路徑典型的算法有D*算法。荷蘭計算機專家E.W.Dijkstra在1959年提出了具有深遠影響的Dijkstra最短路徑算法,繼Dijkstra之后涌現出一大批求解最短路徑問題的方法[3,4]。Cherxassky,Goldberg和Razik在1996年對Dijkstra算法、Incremental Graph算法等17種最短路徑算法進行了對比評估,通過基于不同性質的隨機網絡的分析評估之后,發現并沒有萬能的算法,在不同的網絡特性中,相應地有不同的優勢算法[5]。
本文主要研究的是在地下天然氣管線鋪建時最短路徑選取問題,是屬于對靜態最短路徑算法的研究范疇,因此本文運用經典Dijkstra算法,以ArcGIS為開發平臺,開發了油氣管網最優路徑的選取系統。
(1)組件對象模型(COM)
組件對象模型(COM)是一個關于怎么建立組件,怎樣以組件為基礎開發應用程序的規范說明,可動態交替更新組件。開發人員在COM構架下可以按照需求開發出功能不一的組件,并組合起來構成復雜的應用系統。因此不僅可以在多個應用程序下重復利用一個組件也可以隨時根據系統需求對某個或多個組件進行定制更新和升級。
(2)組件式技術開發平臺
組件式GIS開發平臺主要由基礎組件、高級通用組件和行業性組件三級結構組成:基礎組件提供基礎交互,用于空間數據管理以及數據庫連接;高級通用組件由基礎組件組成,如顯示和編輯等,主要用于通用功能的實現。行業性組件則把地理信息行業應用中的特定算法抽象固化到固定的組件中,更針對性地開發行業性應用系統,加速開發過程[6]。
ArcGIS Engine是一個簡單的、獨立于應用程序的Arc Objects編程環境,開發人員用于建立自定義應用程序的嵌入式GIS組件的一個完整類庫。Arc Engine由一個軟件開發包和一個可以重新分發的為ArcGIS應用程序提供平臺的運行時(runtime)組成。
ArcEngine功能層次由以下5個部分組成:基本服務;數據存取;地圖表達;開發組件;運行時選項。
依據設計思路,并結合系統擬實現的功能,將分為三層構架,分別為基礎應用層、數據管理層以及應用分析層。基礎應用層包括一些基本的底層數據,包含居民地、綠地、學校等點線面數據;數據管理層則主要為底圖數據和分析網絡,用來實現算法;分析應用層則為最短路徑選取以及查詢功能等,具體如圖1所示。

圖1 系統總體構架
本系統開發和運行的環境如表1所示。

系統開發運行環境 表1
根據需求分析,本系統功能將分為以下幾大功能:①文件功能;②編輯功能;③最短路徑分析功能;④視圖功能;⑤輔助功能。如圖2所示。

圖2 系統功能劃分
(1)編輯功能模塊
該功能包含基本的剪切、復制、粘貼、查找、全選等功能。
查找功能:可分別對各個圖層的地物進行搜索查詢,并可漫游到查詢的地物,方便用戶快捷、精確地查詢到目標地物。
(2)查詢功能模塊
為方便用戶快速查詢相關地物,本系統將實現目標地物的快速定位并漫游到目標地物。
同時,配備相應的屬性查詢,用戶可以清楚地查詢到相關地物的屬性信息,例如:地址、電話等相關信息。
(3)最短路徑分析功能模塊
該功能為本系統核心功能,可對任意兩點天然氣運輸站進行最短路徑分析,并在地圖上進行可視化標記,同時顯示最短路徑的具體路程等基本信息。
障礙點分析:若某運輸站出現技術故障,暫時不能正常工作,系統在分析時將自動繞過有障礙的運輸站。
導出圖片:可將已算出的最短路徑進行出圖保存,方便日后記錄查看。
(4)視圖功能模塊
本功能主要包括全景視圖、前一視圖、后一視圖、圖層標注、標注清除等功能。全景視圖、前一視圖、后一視圖功能的設置目的是方便用戶瀏覽地圖。
圖層標注:該功能可對目標圖層進行標注,可選擇要標注的字段,并能對標注進行字體、字號、顏色、比例尺等設置。最終在地圖上顯示標注信息。
標注清除:對已經標注的圖層,進行標注清除。
屬性查詢:該功能可對目標地物進行屬性查詢,例如超市地址、聯系電話、優惠信息等。選擇目標地物所屬圖層,選取目標地物,則可在圖框中查看目標地圖的所有屬性信息。
C#是微軟公司發布的一種面向對象的、運行于.NET Framework之上的高級程序設計語言。C#包括了與Java幾乎同樣的語法和編譯成中間代碼再運行的過程,例如單一繼承、接口等。本系統用到了窗體類、自定義功能集類、BaseCommand類、BaseTool類等。從類的角度重新考慮程序的全部功能,提取耦合度較高的過程單獨封裝成類,使功能更加細化,有利于具體的代碼實現。圖3舉例表示了所使用類之間的關系[7]。

圖3 類之間關系
本系統中要素屬性查詢類和打開地圖文件類,繼承于BaseTool和BaseCommand類,這些類往往執行一個相對獨立的任務,它們通常位于工具欄中和右鍵菜單中。主要方法一般為與用戶進行交互事件相關的操作地圖的方法,如地圖屬相查詢時的Flash,Zoom to,Pan to等。
天然氣管線路徑分析系統的數據主要為各地物類的屬性。本設計涵蓋空間數據中基本的要素類型及數據格式,包括分析網絡的點、線以及各地物(超市、花園、居民地等)屬性信息,方便查閱。
ArcCatalog是地理數據的資源管理器、是ArcGIS Desktop中較為常用應用程序之一。用戶通過ArcCatalog來組織、管理和創建GIS數據。Geodatabase數據模型主要是用來實現矢量數據和柵格數據的一體化存儲,目前主要有兩種格式,一種是基于Access文件的格式(稱之為Personal Geodatabase),另外一種是基于Oracle或SQL Server等RDBMS關系型數據庫管理系統的數據模型,本設計中,將采用Access文件存儲格式[8]。
(1)數據庫結構
結合本系統的功能,數據庫設計如圖4所示。

圖4 數據庫結構
(2)數據庫字段
數據的字段類型涵蓋雙精度浮點型、文本型、長整形和日期型等。具體如表2與表3所示:
①分析網絡

配送站表結構 表2
②底層數據

超市表結構 表3
本系統主界面設計如圖5、圖6所示。

圖5 主界面窗體設計1

圖6 主界面窗體設計2
主界面由標題欄、菜單欄、工具欄、ToolbarControl、TOCControl、MapControl、狀態欄等組成。為了迎合市場商業化,加入DotNetbar控件,使系統界面更加接近Windows系統,方便使用。
設G=(V,E)是一個帶有權的有向圖,把圖中頂點集合V分成兩組,第一組為已求出最短路徑的頂點集合(用S表示,初始時S中只有一個源點,以后每求得一條最短路徑,就將其加入集合S中,直到全部頂點都加入S中,算法就結束了),第二組為其余未確定最短路徑的頂點集合(用U表示),按最短路徑長度的遞增次序依次把第二組的頂點加入S中。在加入的過程中,總保持從源點v到S中各頂點的最短路徑長度不大于從源點v到U中任何頂點的最短路徑長度。此外,每個頂點對應一個距離,S中頂點的距離就是從v到此頂點的最短路徑長度,U中頂點的距離,是從v到此頂點只包括S中的頂點為中間頂點的當前最短路徑長度[9,10]。
Dijkstra算法步驟如下:
(1)初始時,S只包含源點,即S={v},v的距離為0。U包含除v外的其他頂點,即:U={其余頂點},若v與U中頂點u有邊,則正常有權值,若u不是v的出邊鄰接點,則權值為∞。
(2)從U中選取一個距離v最小的頂點k,把k加入S中(該選定的距離就是v到k的最短路徑長度)。
(3)以k為新考慮的中間點,修改U中各頂點的距離;若從源點v到頂點u的距離(經過頂點k)比原來距離(不經過頂點k)短,則修改頂點u的距離值,修改后距離值的頂點k的距離加上邊上的權。
(4)重復步驟(2)和(3)直到所有頂點都包含在S中[11]。
(1)數據讀取
系統讀取用于分析的分析網絡以及地形底圖,顯示效果如圖7所示。

圖7 數據讀取
(2)圖層選擇
選取相應的圖層,然后進行相應的操作。路徑分析應在線圖層(psline)進行操作,如圖8所示。
(3)選取起始點
圖層設定完成后,選取起止點。選擇空間區域需要執行的操作有:點擊選擇空間區域,激活主窗體,在MapControl控件中用鼠標依次選擇起點和終點。此時選擇起始點完畢,并點擊最短路徑分析,即可得到結果。結果顯示分別有兩個界面,其中一個為MapControl顯示窗口,直接用彩色標注最短路徑結果;另一個為Textbox顯示窗口,用文字記錄最短路徑。顯示效果如圖9、圖10所示。

圖8 圖層選擇

圖9 Textbox顯示窗口

圖10 MapControl顯示窗口
(4)設置障礙點功能
考慮系統的容錯性與綜合性,若某油氣配送站出現故障,暫時無法工作時,對該點進行標記,系統將自行避開故障配送站,進行最短路徑選取。最終效果如圖11所示。

圖11 障礙點插入顯示效果
本文在ArcGIS Engine平臺上利用C#語言實現了拓撲結構生成和最短路徑分析,通過簡單的點擊操作,確定起始點便可得到最短路徑,并在電子地圖上予以顯示,方便直觀。同時也可以在線路選擇時進行障礙設置,得到有一定條件約束時的最短路徑選擇結果。本系統對管網管理的貢獻如下:最短路徑選取,支持障礙點插入分析,輔助科學規劃路線;地物查詢,為用戶快速查詢地物以及地物相關屬性提供幫助;圖層標注,為用戶提供方便的標注手段,方便地圖的查閱;系統的建立為科學高效地規劃地下路線提供了技術工具。本系統的建立,使路線規劃人員更加容易地規劃與選擇最短路徑,能夠為管理者提供輔助性決策依據,在一定程度上節省了人力物力。由于時間和能力等諸方面的原因,系統在許多方面還有提升空間,比如算法效率提高問題。