程智博,魏小娟
(1.中國(guó)鐵道科學(xué)研究院,北京 100081;2.中國(guó)鐵道科學(xué)研究院 電子計(jì)算技術(shù)研究所,北京 100081)
基于開源數(shù)據(jù)引擎的鐵路基礎(chǔ)設(shè)施地理空間數(shù)據(jù)管理方法的研究
程智博1,魏小娟2
(1.中國(guó)鐵道科學(xué)研究院,北京 100081;2.中國(guó)鐵道科學(xué)研究院 電子計(jì)算技術(shù)研究所,北京 100081)
通過(guò)對(duì)目前鐵路基礎(chǔ)設(shè)施管理定位現(xiàn)狀的研究,針對(duì)大部分采用商業(yè)型數(shù)據(jù)引擎增加成本的問題,提出一種基于PostGIS的線性參考模型。對(duì)鐵路一維線路空間數(shù)據(jù)進(jìn)行組織和存儲(chǔ),實(shí)現(xiàn)鐵路線性資產(chǎn)空間位置信息的定位管理,為驗(yàn)證該方法應(yīng)用的可行性給出運(yùn)行實(shí)例,利用鐵路地理信息平臺(tái)上傳應(yīng)用服務(wù),達(dá)到正確描述鐵路線性資產(chǎn)的地圖位置和降低成本的目的。
PostGIS;線性參考;定位管理
鐵路基礎(chǔ)設(shè)施是指構(gòu)成鐵路路網(wǎng)的固定設(shè)施,主要包括軌道、線路、路基、橋涵、隧道等。這些基礎(chǔ)設(shè)施的空間數(shù)據(jù)多以線狀表達(dá),具有海量、類型復(fù)雜等地理特征,需要使用空間數(shù)據(jù)庫(kù)將固定設(shè)施的空間位置進(jìn)行管理?,F(xiàn)有的鐵路基礎(chǔ)設(shè)施臺(tái)賬管理方法中,采用線路-里程的方式進(jìn)行位置定位,借助于一維線性度量單位表達(dá)鐵路沿線設(shè)備的位置。通過(guò)WebGIS二維空間坐標(biāo)展示鐵路線路信息時(shí),并沒有考慮到鐵路設(shè)施數(shù)據(jù)的一維線性特征,如何正確地融合兩者成為管理和維護(hù)鐵路基礎(chǔ)設(shè)施地理信息數(shù)據(jù)的關(guān)鍵手段。因此,在鐵路空間數(shù)據(jù)庫(kù)中,組織和存儲(chǔ)鐵路一維的線路空間數(shù)據(jù),并且能夠完善地管理、表達(dá)設(shè)施設(shè)備的空間位置信息,成為亟待解決的問題[1]。
隨著多種GIS軟件支持對(duì)PostgreSQL空間數(shù)據(jù)庫(kù)的訪問,利用PostgreSQL和PostGIS數(shù)據(jù)引擎管理鐵路線性空間數(shù)據(jù),能夠增強(qiáng)空間數(shù)據(jù)庫(kù)的集成部署的靈活性、降低鐵路GIS項(xiàng)目的開發(fā)成本,相對(duì)于傳統(tǒng)的商業(yè)型數(shù)據(jù)引擎,具有強(qiáng)大的優(yōu)勢(shì)。
1.1 線性參考
線性參考(Linear Referencing)即利用已有線性要素的相對(duì)位置存儲(chǔ)地理數(shù)據(jù)的一種方法,無(wú)需顯示(X,Y)坐標(biāo)而唯一地標(biāo)識(shí)線路位置的過(guò)程[2]。主要特點(diǎn)是,僅用一個(gè)表達(dá)里程的參數(shù)來(lái)定位屬性和事件,動(dòng)態(tài)地參考和創(chuàng)建線性結(jié)構(gòu)的各個(gè)部分[3]。
線性參考主要使用具有唯一標(biāo)識(shí)ID的路徑度量值(M)描述與沿線自定義起點(diǎn)的相對(duì)位置。M值存儲(chǔ)在事件表中,將線路從多段線(Polygon)類型變成帶有里程值的多段線(Polygon M)類型。例如通過(guò)帶有里程值的線路進(jìn)行設(shè)備資產(chǎn)定位,描述列車的位置 “距京滬高速起點(diǎn)60 km處”比描述(116.72,39.49)的GPS坐標(biāo)更有意義。圖1所示不同維度表達(dá)坐標(biāo)點(diǎn)和里程值的關(guān)系。
圖1 一維和二維的不同線性表達(dá)方式
1.2 PostGIS
空間數(shù)據(jù)的存儲(chǔ)與管理是GIS的基本功能,如何對(duì)一維線性的鐵路資產(chǎn)在空間數(shù)據(jù)庫(kù)中進(jìn)行管理也是研究熱點(diǎn)。目前,主流的商業(yè)型空間數(shù)據(jù)庫(kù)引擎有Oracle Spatial、ArcSDE、SQL Server Spatial等,然而高昂的購(gòu)置成本有時(shí)讓人望而卻步。隨著開源數(shù)據(jù)庫(kù)的發(fā)展,并且遵循開放地理空間聯(lián)盟(OGC)制定的規(guī)范,PostgreSQL和MySQL等免費(fèi)的空間數(shù)據(jù)庫(kù)越來(lái)越受到用戶的歡迎。作為較主流的兩款開源數(shù)據(jù)庫(kù),其空間插件PostGIS和MySQL spatial extensions管理地理空間數(shù)據(jù)具有自身的特色,相比較而言,PostGIS能夠提供更多的空間索引類別、常用的投影坐標(biāo)系、復(fù)雜的數(shù)據(jù)操作和分析功能,將屬性信息和空間信息存儲(chǔ)在一張表里對(duì)空間對(duì)象進(jìn)行完整性表達(dá)[4],這些優(yōu)勢(shì)增加了空間數(shù)據(jù)的易用性和互操作性,本文選擇PostGIS數(shù)據(jù)引擎管理鐵路線性數(shù)據(jù)。
采用開源數(shù)據(jù)庫(kù)平臺(tái)PostgreSQL 9.4 和 PostGIS 2.1,基于線性參考方法進(jìn)行建模,以驗(yàn)證一維線性鐵路設(shè)備資產(chǎn)在開源數(shù)據(jù)庫(kù)中的定位可行性。通過(guò)PostGIS提供的擴(kuò)展程序封裝線性參考的算法,能夠解決一維線性數(shù)據(jù)和二維地理坐標(biāo)數(shù)據(jù)的里程轉(zhuǎn)換。圖2是線性參考模型示意圖。
圖2 線性參考模型流程圖
2.1 數(shù)據(jù)處理層
數(shù)據(jù)處理層是基礎(chǔ)層,根據(jù)鐵路不同業(yè)務(wù)部門的設(shè)施設(shè)備臺(tái)賬和已有地圖數(shù)據(jù)建立線路的空間實(shí)體,盡量保證線路的連續(xù)性和完整性??梢愿鶕?jù)自定義或者讀取其他字段的方式獲取路徑的度量值,相應(yīng)地設(shè)置其他參數(shù),得到具有M字段的路徑。通過(guò)與線路對(duì)應(yīng)的點(diǎn)文件進(jìn)行校準(zhǔn),進(jìn)行線路糾正,得到與之匹配的線路要素類,此時(shí)線上的每一個(gè)點(diǎn)都具有M值。滿足式(1):
其中:ObjectID是屬性表每行具有唯一標(biāo)識(shí)的ID;Shape類型是(Polygon M),lineID是標(biāo)識(shí)線路的ID。
2.2 數(shù)據(jù)存儲(chǔ)層
數(shù)據(jù)的存儲(chǔ)是數(shù)據(jù)入庫(kù)的過(guò)程,PostGIS是通過(guò)自身內(nèi)建模板數(shù)據(jù)庫(kù)進(jìn)行新建空間數(shù)據(jù)庫(kù),其空間支持功能加載到postgis_template模板空間數(shù)據(jù)庫(kù)中,這樣通過(guò)SQL語(yǔ)句即可創(chuàng)建數(shù)據(jù)庫(kù)。選擇ogr2ogr命令導(dǎo)入shp、KML、XML等格式的文件,不同的文件格式采取相應(yīng)的數(shù)據(jù)導(dǎo)入的方式,入庫(kù)的要素類支持路線空間數(shù)據(jù)庫(kù)和事件屬性數(shù)據(jù)庫(kù)的關(guān)聯(lián)。存儲(chǔ)的數(shù)據(jù)由PostGIS支持的文本表達(dá)方法(WKT)和二進(jìn)制表達(dá)方法(WKB)描述幾何類型。
2.3 擴(kuò)展開發(fā)層
編寫用戶定義函數(shù)(UDF)是PostgreSQL的強(qiáng)大功能之一。PL/pgSQL是一個(gè)功能強(qiáng)大的SQL腳本語(yǔ)言,存在于絕大多數(shù)的PostgreSQL安裝文件中,基本不需要對(duì)它進(jìn)行重復(fù)設(shè)置。該層的主要功能是實(shí)現(xiàn)二維空間和一維線性位置參照系的轉(zhuǎn)換,其轉(zhuǎn)換方式有2種:(1)從一維線性的數(shù)據(jù)到二維坐標(biāo)系的轉(zhuǎn)換;(2)從二維地圖坐標(biāo)到一維線性數(shù)據(jù)的轉(zhuǎn)換。
2.3.1 第1種轉(zhuǎn)換方式
試圖求出在線路長(zhǎng)度范圍內(nèi)某里程值(M)所對(duì)應(yīng)的點(diǎn)的二維空間坐標(biāo) (X,Y)。這種轉(zhuǎn)換需要插值和擬合即可。為了保證線路的光滑度,采用3次樣條插值方法,數(shù)學(xué)模型建立如下:
設(shè)y=f(xi)是區(qū)間[m1,mn]上的連續(xù)函數(shù),f在[m1,mn]的各區(qū)間函數(shù)s(xi),滿足:
s(x)在每個(gè)區(qū)間內(nèi)都是三次多項(xiàng)式;
s(x)在每個(gè)節(jié)點(diǎn)內(nèi)具有二階連續(xù)導(dǎo)數(shù);
s(xi)=yi
得到每個(gè)小區(qū)間[mi–1,mi]的表達(dá)式:
該表達(dá)式所繪制的曲線能夠較好地逼近原始線路,通過(guò)擬合方式解析函數(shù),將整個(gè)線路的圖上距離(Shape Length)進(jìn)行歸一化,通過(guò)相對(duì)于整條線路的浮點(diǎn)數(shù)A∈[0,1]處的里程值得到相應(yīng)的二維點(diǎn)坐標(biāo)。同時(shí),也可以通過(guò)自定義起始里程和終止里程,得到在此區(qū)間內(nèi)的子線路。
使用PL/pgSQL語(yǔ)言編寫算法、封裝函數(shù),通過(guò)傳入Float型的里程值和Integer型的線路標(biāo)識(shí),對(duì)指定線路具有(MulitiLineString) M類型的多段線進(jìn)行賦值、插值等操作,最終返回可被解析為文本類型的點(diǎn)坐標(biāo)PointM或LineString。
2.3.2 第2種轉(zhuǎn)換方式
根據(jù)已知的二維平面點(diǎn)坐標(biāo)(X,Y),得到該點(diǎn)(在線路上)或者距離線路最近的點(diǎn)在線路上的里程值(M)。在鐵路線性要素?cái)?shù)據(jù)的表達(dá)過(guò)程中,隨著線性要素屬性的變化,將線路在需求的位置處打斷以反映數(shù)據(jù)的變化。因此采用分段曲線擬合的方式對(duì)兩種位置的關(guān)系進(jìn)行轉(zhuǎn)換[5]。
假設(shè)鐵路線路上有(n+1)個(gè)采樣點(diǎn),分為L(zhǎng)段,則有:
可以建立該點(diǎn)(X,Y)到線路的距離(1≥0)的n次多項(xiàng)式:
其中,k=1,2,…,L。
根據(jù)最小二乘法,進(jìn)行分段插值,得到最小值的ak,0,ak,1,ak,2,…,ak,t,以及bk,0,bk,1,bk,2,…,bk,t。根據(jù)求出的每一段的,得到R(m)的表達(dá)式:
通過(guò)分段式的最小二乘法進(jìn)行擬合插值,能夠保證相鄰分段之間的平滑性和連續(xù)性。通過(guò)傳入POINT型的(X,Y),判斷該點(diǎn)是在線路上還是線路外,若在線路上,直接返回距離線路起始點(diǎn)的里程值;若在線路外,根據(jù)其最短距離映射到線路上得到里程值。使用該方法可避免使用PostGIS內(nèi)部函數(shù)在弧段、折角等處使用直線距離取代曲線距離而產(chǎn)生的誤差。
2.4 服務(wù)發(fā)布層
針對(duì)PostgreSQL是一個(gè)自由的關(guān)系型數(shù)據(jù)庫(kù),可以采用Web Services技術(shù),達(dá)到實(shí)現(xiàn)異構(gòu)系統(tǒng)平臺(tái)之間的互操作性的目的[6],將系統(tǒng)的數(shù)據(jù)顯示和需求作為一種服務(wù),通過(guò)服務(wù)的請(qǐng)求調(diào)用獲得數(shù)據(jù)庫(kù)的數(shù)據(jù)共享和應(yīng)用?;赪eb Service的關(guān)系型數(shù)據(jù)動(dòng)態(tài)發(fā)布服務(wù)系統(tǒng)主要包括數(shù)據(jù)庫(kù)管理模塊、構(gòu)建服務(wù)模塊、解析信息模塊、服務(wù)發(fā)布模塊,最終生成服務(wù)數(shù)據(jù)庫(kù),可供用戶調(diào)用服務(wù)進(jìn)行查詢參數(shù)和結(jié)果,發(fā)布服務(wù)流程圖如圖3所示。
基礎(chǔ)數(shù)據(jù)庫(kù)采用PostgreSQL數(shù)據(jù)庫(kù),存儲(chǔ)處理后的基礎(chǔ)線性數(shù)據(jù),并可以對(duì)數(shù)據(jù)進(jìn)行添加、刪除、修改和查看等基本操作。通過(guò)對(duì)數(shù)據(jù)庫(kù)添加所需的配置表和必須的字段信息進(jìn)行構(gòu)建服務(wù)模塊。在解析信息模塊中,通過(guò)調(diào)用PostGIS中寫入的函數(shù),將約束條件映射到信息模塊中,使得數(shù)據(jù)庫(kù)能更好地識(shí)別SQL語(yǔ)句。在服務(wù)發(fā)布模塊中,采用REST(REpresentational State Transfer)的結(jié)構(gòu)設(shè)計(jì),將數(shù)據(jù)服務(wù)轉(zhuǎn)移向應(yīng)用服務(wù),利用其提供的服務(wù)接口,將查詢信息存儲(chǔ)到服務(wù)數(shù)據(jù)庫(kù)中,通過(guò)輸入查詢的關(guān)鍵字等信息,獲取查詢結(jié)果,實(shí)現(xiàn)系統(tǒng)間的數(shù)據(jù)服務(wù)應(yīng)用。
圖3 發(fā)布服務(wù)流程圖
采用B/S架構(gòu),應(yīng)用和數(shù)據(jù)庫(kù)部署在同一臺(tái)服務(wù)器上,使用PostgreSQL數(shù)據(jù)庫(kù)及PostGIS插件、Tomcat 7.0中間件,運(yùn)行于Windows Server 2008 R2操作系統(tǒng),客戶端使用Windows 7 操作系統(tǒng),IE 8/9/10/11瀏覽器,在鐵路地理信息平臺(tái)中注冊(cè)服務(wù),在該平臺(tái)的線性參考模塊中查詢到上傳的服務(wù),界面如圖4所示。
圖4 服務(wù)管理界面
根據(jù)發(fā)布的“坐標(biāo)轉(zhuǎn)里程”和“里程轉(zhuǎn)坐標(biāo)”兩種Web服務(wù),選擇線路所在的空間數(shù)據(jù)庫(kù),可以依據(jù)不同的線路類型進(jìn)行查詢,如選擇鐵路正線、站線等,構(gòu)造完成的查詢實(shí)例界面如圖5所示。
查詢經(jīng)過(guò)服務(wù)引擎轉(zhuǎn)化成對(duì)應(yīng)的UDF語(yǔ)句,在調(diào)用服務(wù)的過(guò)程中將輸入的數(shù)據(jù)轉(zhuǎn)化為參數(shù)與服務(wù)接口中的函數(shù)參數(shù)相匹配,轉(zhuǎn)到PostgreSQL數(shù)據(jù)庫(kù)中將查詢結(jié)果返回給Web界面。
圖5 里程轉(zhuǎn)坐標(biāo)查詢界面
通過(guò)對(duì)PostGIS空間數(shù)據(jù)引擎的研究,根據(jù)鐵路線性要素的一維表達(dá)方式的實(shí)際情況,提出了基于PostGIS的線性參考模型,并通過(guò)PostgreSQL作為后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行發(fā)布Web服務(wù)。該應(yīng)用實(shí)例證明了PostGIS開源數(shù)據(jù)庫(kù)引擎的實(shí)用性和可操作性,能融合于鐵路地理信息平臺(tái)中,完成鐵路一維線性資產(chǎn)的地理定位表達(dá),為今后地理空間數(shù)據(jù)的引擎選擇提供了更廣闊的空間。
[1]史天運(yùn),王英杰,李 平.數(shù)字鐵路框架體系的研究[J].交通運(yùn)輸系統(tǒng)工程與信息,2010,10(6):29-33.
[2]ESRI 環(huán)境系統(tǒng)研究所公司(美國(guó)).ArcGIS中的線性參考[Z].美國(guó):ESRI環(huán)境系統(tǒng)研究所公司,2004.
[3]程 亮,龔健雅,朱明媛,等.線性參考系統(tǒng)技術(shù)在道路資產(chǎn)管理系統(tǒng)中的應(yīng)用研究[J].測(cè)繪科學(xué),2008,33(4):206-208.
[4]侯 偉.開源空間數(shù)據(jù)庫(kù)的數(shù)據(jù)表達(dá),管理與分析[J].測(cè)繪通報(bào),2012(S1):602-604.
[5]蔡先華,齊 征,戚潔平,等.基于線性LRS與基于SRS的空間數(shù)據(jù)轉(zhuǎn)換方法[J].公路交通科技,2005,(S2):165-168.
[6]尹兆冰,王加陽(yáng).Web Service及其關(guān)鍵技術(shù)研究綜述[J].軟件導(dǎo)刊,2010,9(2):121-123.
責(zé)任編輯 徐侃春
Methods of railway infrastructure geo-spatial data management based on Open Source Database Engine
CHENG Zhibo1,WEI Xiaojuan2
( 1.China Academy of Railway Sciences,Beijing 100081,China;2.Institute of Computing Technologies,China Academy of Railway Sciences,Beijing 100081,China)
This article researched on the location situation of railway infrastructure management,proposed a kind of line reference model based on PostGIS to solve the problem of increased cost caused by using commercial database engine.The one-dimensional railway line data were managed and stored to implement the location management of railway linear assets spatial position information.The operation instance was given to verify the feasibility of the model application.The railway geographic information platform was used to upload application service,achieve the purpose of describing the map position of railway linear assets correctly and reducing the cost.
PostGIS;linear referencing;location management
U2:TP39
A
1005-8451(2016)04-0006-04
2015-10-08
程智博,在讀博士研究生;魏小娟,助理研究員。