張現(xiàn)軍,陳甫
(濟(jì)南市勘察測繪研究院,山東 濟(jì)南 250012)
城市地下管網(wǎng)作為城市最重要的基礎(chǔ)設(shè)施的一部分,是維持城市正常運(yùn)轉(zhuǎn)的“生命線”,其擔(dān)負(fù)著一個(gè)城市能源輸送、信息傳輸?shù)裙ぷ鱗1]。我國城市地下管線種類繁多,包括供水、熱力、燃?xì)?、排水、通信管網(wǎng)、電力等8大類20余種管線。隨著全國范圍內(nèi)地下管線普查工作的逐步完成,各個(gè)城市建立并完善了地下管線數(shù)據(jù)庫,城市中的相關(guān)部門、管線企業(yè)根據(jù)不同應(yīng)用背景,研發(fā)出了具有多種應(yīng)用特點(diǎn)的管線管理系統(tǒng)。
隨著城市基礎(chǔ)建設(shè)的快速發(fā)展,地下管線變動(dòng)頻繁,雖然變化較小,但實(shí)時(shí)性要求高,如何保證已建立的管線數(shù)據(jù)庫的同步更新、保持?jǐn)?shù)據(jù)庫的活力,對(duì)管線系統(tǒng)提出了新的要求。目前已建立的地下管線管理系統(tǒng)對(duì)管網(wǎng)數(shù)據(jù)的維護(hù)多采取C/S(Client/Server)模式,這種方法對(duì)客戶端配置要求高,需要專業(yè)人員進(jìn)行維護(hù),適用于大批量數(shù)據(jù)的更新和維護(hù),但對(duì)于小范圍或少量數(shù)據(jù)的動(dòng)態(tài)更新具有一定的局限性。相較于C/S模式,B/S(Browser/Server)模式具有跨平臺(tái)、動(dòng)態(tài)、可重用、實(shí)時(shí)性強(qiáng)等特點(diǎn),對(duì)客戶端要求較低。部分學(xué)者基于B/S(Browser/Server)模式,結(jié)合開放地理空間信息聯(lián)盟(OGC)標(biāo)準(zhǔn)規(guī)范中的WFS服務(wù)實(shí)現(xiàn)了管線數(shù)據(jù)的維護(hù),在一定程度上實(shí)現(xiàn)了數(shù)據(jù)的動(dòng)態(tài)更新。但這種方法只是對(duì)要素的屬性及簡單要素進(jìn)行了編輯,并沒有對(duì)管線間的拓?fù)潢P(guān)系進(jìn)行維護(hù)。
本文在通用管網(wǎng)模型的基礎(chǔ)上研究具有良好適應(yīng)性的專業(yè)管網(wǎng)數(shù)據(jù)模型,對(duì)專業(yè)管網(wǎng)的特征和拓?fù)潢P(guān)系進(jìn)行表達(dá),用關(guān)系型數(shù)據(jù)庫存儲(chǔ)實(shí)現(xiàn),通過WebService進(jìn)行管網(wǎng)數(shù)據(jù)的編輯和拓?fù)渚S護(hù)。在用戶交互界面,基于客戶端緩存的要素捕捉,提高數(shù)據(jù)編輯的準(zhǔn)確性。
城市地下管網(wǎng)作為城市重要的基礎(chǔ)設(shè)施,其實(shí)體種類繁多,數(shù)量龐大,網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)復(fù)雜[2]。城市地下管網(wǎng)按照分布一般可以分為三類:呈樹枝狀分布,呈環(huán)狀分布或呈輻射狀分布。城市地下管網(wǎng)數(shù)據(jù)作為基本網(wǎng)絡(luò)模型中的一種,因此其具有網(wǎng)絡(luò)模型的一般特征,從管網(wǎng)的結(jié)構(gòu)上來說,管網(wǎng)是由連接管段的管點(diǎn)以及管點(diǎn)之間的管段組成。管點(diǎn)根據(jù)要素實(shí)體的類型可以分為閥門、節(jié)點(diǎn)等。根據(jù)管網(wǎng)類型管點(diǎn)又可細(xì)分為多個(gè)子類型,例如供水管網(wǎng)節(jié)點(diǎn)分為水表、消火栓、水泵、水廠、接入點(diǎn)等,燃?xì)夤芫W(wǎng)節(jié)點(diǎn)分為用戶、供氣站、加壓站、閥門等。
城市地下管網(wǎng)中設(shè)施并不是孤立存在的,設(shè)施間具有拓?fù)潢P(guān)聯(lián)關(guān)系,如供熱管網(wǎng)中用戶、閥門等與供熱管道之間;燃?xì)夤芫W(wǎng)中用戶、供氣站等與輸送線路之間;排水系統(tǒng)中檢查井與雨水管之間等。城市地下管網(wǎng)空間數(shù)據(jù)的各個(gè)圖層中均不包含面狀實(shí)體,城市基本框架中雖然包括諸如小區(qū)、公園等面狀實(shí)體,但基本框架數(shù)據(jù)在管線應(yīng)用中通常作為背景圖用于指明地下管網(wǎng)的具體位置,精度要求不是很高,因此在建立管網(wǎng)模型可以進(jìn)行適當(dāng)簡化,無須考慮面狀實(shí)體,同樣考慮空間數(shù)據(jù)的拓?fù)鋾r(shí)可以忽略與面狀實(shí)體相關(guān)的拓?fù)潢P(guān)系[3]。
本文構(gòu)建的基于元數(shù)據(jù)面向?qū)嶓w的管網(wǎng)數(shù)據(jù)模型將管網(wǎng)元數(shù)據(jù)和管網(wǎng)要素實(shí)體分開存儲(chǔ)。元數(shù)據(jù)用于存儲(chǔ)各專業(yè)管網(wǎng)的劃分及其相對(duì)應(yīng)的管網(wǎng)特性,空間要素存儲(chǔ)根據(jù)管網(wǎng)分類按照一定的規(guī)則存儲(chǔ)管網(wǎng)的空間要素及其之間的拓?fù)潢P(guān)系。模型將管網(wǎng)中的要素抽象為點(diǎn)、線兩類要素,點(diǎn)要素表示管網(wǎng)中連接管段間的設(shè)備,線要素表示管網(wǎng)中的管段。管網(wǎng)中的拓?fù)潢P(guān)系在線狀要素表中進(jìn)行存儲(chǔ),即線狀要素由起點(diǎn)和終點(diǎn)連接而成,其中起點(diǎn)和終點(diǎn)必須與點(diǎn)狀要素相連,線狀要素不能脫離點(diǎn)狀要素孤立存在[4]。
(1)元數(shù)據(jù)邏輯結(jié)構(gòu)組織
元數(shù)據(jù)存儲(chǔ)由管網(wǎng)分類規(guī)范、數(shù)據(jù)庫元規(guī)范、設(shè)備分類、設(shè)備字段組成,其對(duì)應(yīng)的數(shù)據(jù)庫表名分別為M_GWFL、M_DBMETA、*_M_MT、*_M_MT_FLD,其中設(shè)備分類、設(shè)備字段表名前的“*”為專業(yè)管網(wǎng)在數(shù)據(jù)庫元規(guī)范中所對(duì)應(yīng)的管網(wǎng)名稱。設(shè)備分類表和設(shè)備屬性字段表之間通過設(shè)備分類標(biāo)識(shí)字段“Dno”進(jìn)行關(guān)聯(lián)。元數(shù)據(jù)邏輯結(jié)構(gòu)組織關(guān)系如圖1所示。
圖1 元數(shù)據(jù)邏輯結(jié)構(gòu)組織
(2)管網(wǎng)實(shí)體邏輯結(jié)構(gòu)組織
模型中將各專業(yè)管網(wǎng)的點(diǎn)、線要素根據(jù)自身的專業(yè)特征分開存儲(chǔ),對(duì)應(yīng)的表名分別為*_nod和*_lin,表名前的“*”與設(shè)備分類和設(shè)備字段表名前的“*”規(guī)則一致。
模型中點(diǎn)線要素表的要素關(guān)系,實(shí)際上表示的是管網(wǎng)中要素的拓?fù)潢P(guān)系。點(diǎn)線之間拓?fù)潢P(guān)系的表示是管網(wǎng)編輯中拓?fù)潢P(guān)系維護(hù)的基礎(chǔ),在該數(shù)據(jù)模型下,對(duì)點(diǎn)、線要素的添加、刪除、更新不再是簡單的編輯操作,在進(jìn)行管網(wǎng)數(shù)據(jù)維護(hù)的同時(shí),還需保持管網(wǎng)拓?fù)潢P(guān)系的完整性。
WebGIS三層架構(gòu)中的服務(wù)層作為各類服務(wù)提供的載體,對(duì)下管理共享數(shù)據(jù),對(duì)上集成支撐各類業(yè)務(wù)應(yīng)用,服務(wù)層的實(shí)現(xiàn)主要是通過WebService進(jìn)行實(shí)現(xiàn)。WebService通過SOAP、UDDI和XML等標(biāo)準(zhǔn)技術(shù)為應(yīng)用軟件之間的通信制定了的統(tǒng)一的標(biāo)準(zhǔn),應(yīng)用程序之間通過標(biāo)準(zhǔn)的方式進(jìn)行通信[5]。
本文需要對(duì)業(yè)務(wù)數(shù)據(jù)和管網(wǎng)空間數(shù)據(jù)同時(shí)進(jìn)行管理和操作,在服務(wù)層的實(shí)現(xiàn)中使用了WebService與GIS結(jié)合的GIS WebService。服務(wù)接口根據(jù)服務(wù)類型分為地圖元數(shù)據(jù)接口與要素編輯接口,接口在設(shè)計(jì)上遵循OGC規(guī)范,能夠與其他業(yè)務(wù)系統(tǒng)進(jìn)行很好的對(duì)接。要素編輯接口如表1所示。
要素編輯接口 表1
(1)緩存方式選擇
WebGIS系統(tǒng)是一個(gè)具有多層結(jié)構(gòu)的分布式系統(tǒng),WebGIS空間數(shù)據(jù)的緩存可分為服務(wù)器端緩存和客戶端緩存[6]。服務(wù)器端緩存通常適用于緩存數(shù)據(jù)量比較大、緩存需要被多個(gè)用戶進(jìn)行共享的情況。某些應(yīng)用系統(tǒng)中有些數(shù)據(jù)不需要被其他用戶進(jìn)行共享,但建立緩存可以提高單個(gè)客戶端數(shù)據(jù)請求的響應(yīng)速度,這種情況下通常采用客戶端緩存[7]。
為了提升用戶交互體驗(yàn)以及數(shù)據(jù)編輯的準(zhǔn)確性,地下管網(wǎng)編輯系統(tǒng)中的部分功能添加了要素捕捉,需基于已有的空間數(shù)據(jù)實(shí)時(shí)計(jì)算捕捉目標(biāo)點(diǎn)。為了減少網(wǎng)絡(luò)和服務(wù)器性能因素對(duì)實(shí)時(shí)捕捉的影響,本文選擇將相關(guān)的空間數(shù)據(jù)在客戶端進(jìn)行緩存。
(2)緩存空間數(shù)據(jù)的選取
本文所研究的管網(wǎng)空間數(shù)據(jù)在線編輯主要是針對(duì)管網(wǎng)數(shù)據(jù)進(jìn)行編輯維護(hù),但根據(jù)具體的功能需求差異,對(duì)捕捉數(shù)據(jù)具有相應(yīng)的要求。例如執(zhí)行線上加點(diǎn)操作時(shí),需要對(duì)管網(wǎng)數(shù)據(jù)進(jìn)行捕捉;執(zhí)行解析錄入操作時(shí)需要對(duì)地形圖進(jìn)行捕捉。部分編輯操作對(duì)于捕捉數(shù)據(jù)的要素類型也有一定的要求,例如某些編輯操作僅對(duì)點(diǎn)、線要素進(jìn)行捕捉或?qū)Χ咄瑫r(shí)進(jìn)行捕捉。
對(duì)于管線數(shù)據(jù)的編輯通常在地圖縮放比例比較大時(shí)進(jìn)行,地圖縮放在較小級(jí)別時(shí)進(jìn)行空間數(shù)據(jù)緩存需要存儲(chǔ)的數(shù)據(jù)量比較大,而且緩存的數(shù)據(jù)也沒有利用價(jià)值,反而會(huì)影響系統(tǒng)的性能。
鑒于以上分析,對(duì)于緩存空間數(shù)據(jù)的選取不僅要考慮空間數(shù)據(jù)的類別,還要考慮空間數(shù)據(jù)的要素類型以及建立緩存的時(shí)間點(diǎn)。
(3)空間數(shù)據(jù)緩存的創(chuàng)建及更新策略
客戶端的空間數(shù)據(jù)緩存通常以空間范圍進(jìn)行存儲(chǔ),空間范圍改變時(shí)需要向服務(wù)器發(fā)送請求更新緩存。如圖2所示,當(dāng)對(duì)地圖進(jìn)行操作時(shí),首先判斷捕捉是否開啟,如果沒有開啟直接返回,如果處于開啟狀態(tài),繼續(xù)判斷地圖操作是否被拖動(dòng)或進(jìn)行了縮放,即判斷地圖范圍有沒有發(fā)生變化,如果沒有變化,直接跳出,如果符合條件進(jìn)行下一步判斷,判斷當(dāng)前地圖縮放級(jí)別是否大于用戶設(shè)定的或者系統(tǒng)默認(rèn)的級(jí)別閾值,不符合條件跳出,符合條件則向服務(wù)器發(fā)送請求更新當(dāng)前緩存。
(1)要素捕捉的過程
要素捕捉的過程是根據(jù)鼠標(biāo)光標(biāo)點(diǎn)與地物要素點(diǎn)的位置關(guān)系獲取最優(yōu)點(diǎn)的過程,這個(gè)最優(yōu)點(diǎn)可以是距離光標(biāo)點(diǎn)最近的點(diǎn)或者最近線的端點(diǎn)、垂點(diǎn)、中點(diǎn)等。根據(jù)設(shè)定的捕捉半徑,在光標(biāo)點(diǎn)周圍形成一個(gè)捕捉范圍(通常為矩形范圍),捕捉范圍內(nèi)的點(diǎn)要素或者與捕捉范圍相交的線要素為待篩選的目標(biāo)捕捉對(duì)象,根據(jù)捕捉算法在目標(biāo)捕捉對(duì)象中篩選最優(yōu)點(diǎn),如果目標(biāo)捕捉對(duì)象為空,則認(rèn)為捕捉失敗。
本文的捕捉思路如圖3所示,用戶執(zhí)行某個(gè)編輯功能操作,在鼠標(biāo)移動(dòng)選擇目標(biāo)對(duì)象時(shí),系統(tǒng)首先判斷條件1:功能是否打開了捕捉開關(guān),如果捕捉?jīng)]有打開,執(zhí)行操作1:正常執(zhí)行選擇操作。在捕捉開啟的情況下,判斷條件2:本地緩存是否為空,如果緩存為空,執(zhí)行圖2所示的流程更新本地緩存后仍不滿足條件,直接返回,執(zhí)行操作1。如果滿足條件2或者更新緩存后緩存不為空,繼續(xù)向下執(zhí)行,根據(jù)當(dāng)前光標(biāo)點(diǎn)的屏幕坐標(biāo)與本地緩存中的數(shù)據(jù)根據(jù)設(shè)定的捕捉半徑進(jìn)行計(jì)算,篩選符合條件的捕捉目標(biāo)對(duì)象,如果目標(biāo)對(duì)象為空,執(zhí)行操作1,對(duì)象不為空時(shí),通過計(jì)算定位捕捉點(diǎn)在目標(biāo)對(duì)象上的位置,根據(jù)目標(biāo)定位的位置(單點(diǎn)或線上的垂點(diǎn)、終點(diǎn)、端點(diǎn))選擇合適的Symbol在地圖上進(jìn)行繪制,完成一次捕捉操作。
圖3 要素捕捉的思路
(2)捕捉優(yōu)化的策略
GIS中的空間對(duì)象通過地物的空間坐標(biāo)來表示自然地物,構(gòu)成對(duì)象的最小元素是點(diǎn),點(diǎn)與點(diǎn)之間構(gòu)成線段或者弧段,線段與線段(或者線段與弧段,或者弧段與弧段)之間構(gòu)成線條,閉合的線條構(gòu)成單面,多個(gè)不同方向的閉合線條構(gòu)成多面或有島的面[8]。緩存中是以對(duì)象的形式存儲(chǔ)的空間數(shù)據(jù),有些對(duì)象的空間跨度很大,需要對(duì)對(duì)象進(jìn)行分解,例如多點(diǎn)拆分成點(diǎn)數(shù)組,線條或單面拆分成線段數(shù)組來進(jìn)行捕捉計(jì)算,分解后根據(jù)捕捉范圍剔除一些明顯不符合要求的數(shù)據(jù),縮小參與計(jì)算的數(shù)據(jù)量。
經(jīng)過數(shù)據(jù)精簡篩選后的空間對(duì)象,通過在空間數(shù)據(jù)緩存池中對(duì)目標(biāo)空間對(duì)象建立索引,可以快速查詢和獲取到需要進(jìn)行捕捉計(jì)算的空間實(shí)體,提升捕捉的性能。
基于上述研究內(nèi)容,作者開發(fā)了基于WebGIS的管網(wǎng)在線編輯系統(tǒng)實(shí)例。實(shí)例系統(tǒng)的運(yùn)行環(huán)境包括客戶端環(huán)境和服務(wù)器端環(huán)境,客戶端環(huán)境:內(nèi)存 2 GB以上,主頻 1.8 GHz以上,Windows vista以上操作系統(tǒng),IE8以上瀏覽器;服務(wù)器端環(huán)境:內(nèi)存 4 GB以上,主頻 2.0 GHz以上,Windows Server 2008以上操作系統(tǒng),JSP+Jetty運(yùn)行環(huán)境,需要良好的 100 MB以上的以太網(wǎng)絡(luò)系統(tǒng)。
基于WebGIS的管線在線編輯系統(tǒng)實(shí)例采用WebGIS的三層架構(gòu)設(shè)計(jì),其中數(shù)據(jù)存儲(chǔ)層采用本文所研究的基于元數(shù)據(jù)面向?qū)嶓w的管網(wǎng)數(shù)據(jù)模型的物理存儲(chǔ)結(jié)構(gòu)對(duì)管網(wǎng)數(shù)據(jù)進(jìn)行管理,通過關(guān)系型數(shù)據(jù)庫SQL Server 2008 R2進(jìn)行存儲(chǔ);業(yè)務(wù)服務(wù)層基于ArcObjects SDK for Java和GeoTools進(jìn)行使用編輯服務(wù)接口的開發(fā),對(duì)空間數(shù)據(jù)和屬性數(shù)據(jù)進(jìn)行維護(hù);應(yīng)用展示層基于ArcGIS API for JavaScript結(jié)合Html5、Ajax技術(shù)進(jìn)行實(shí)現(xiàn)。圖4為系統(tǒng)主界面,系統(tǒng)實(shí)現(xiàn)了移動(dòng)管點(diǎn)、合并管點(diǎn)、管段上添加管點(diǎn)、刪除管線、延長管線至管點(diǎn)、批量刪除管點(diǎn)等功能,對(duì)基于緩存的要素捕捉、基于管網(wǎng)模型的拓?fù)渚S護(hù)進(jìn)行了驗(yàn)證。
圖4系統(tǒng)主界面
針對(duì)城市地下管網(wǎng)空間對(duì)象和對(duì)各專業(yè)管網(wǎng)的特性的表達(dá),建立了基于元數(shù)據(jù)面向?qū)嶓w的管網(wǎng)空間數(shù)據(jù)模型,對(duì)于管網(wǎng)實(shí)體數(shù)據(jù)、管網(wǎng)元數(shù)據(jù)以及管網(wǎng)空間實(shí)體之間的拓?fù)潢P(guān)系進(jìn)行存儲(chǔ)。本文提出的WebGIS客戶端基于空間數(shù)據(jù)緩存的要素捕捉,實(shí)現(xiàn)了對(duì)數(shù)據(jù)進(jìn)行快速有效的更改和處理,通過實(shí)例系統(tǒng)對(duì)以上研究內(nèi)容進(jìn)行了驗(yàn)證。
[1] 李金平,薛泮成,孟祥來. 城市地下管網(wǎng)信息系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 測繪工程,2004,13(4):25~27.
[2] 何屹. 基于Web分類技術(shù)的農(nóng)業(yè)信息獲取系統(tǒng)的研究與實(shí)現(xiàn)[D]. 北京郵電大學(xué),2010.
[3] 程小凱,李愷毅,李景文等. 面向?qū)ο蟮某鞘泄芫W(wǎng)數(shù)據(jù)組織模型設(shè)計(jì)[J]. 地理空間信息.2010(02):127~129.
[4] 盧丹. 地下管網(wǎng)地理信息系統(tǒng)通用模型的設(shè)計(jì)與實(shí)現(xiàn)[D]. 哈爾濱:哈爾濱工程大學(xué),2003.
[5] 楊志波. 基于Ajax技術(shù)的WebGIS研究及實(shí)現(xiàn)[D]. 中國科學(xué)院廣州地球化學(xué)研究所,2006.
[6] 彭建偉. Ajax技術(shù)在WebGIS中的應(yīng)用研究[D]. 長沙:中南大學(xué),2008.
[7] 李浩松,朱欣焰,李京偉等. WebGIS空間數(shù)據(jù)分布式緩存技術(shù)研究[J]. 武漢大學(xué)學(xué)報(bào)·信息科學(xué)版,2005,30(12):1092~1095.
[8] 吳磊,黃先鋒,舒寧. GIS大數(shù)據(jù)量編輯處理中快速捕捉的優(yōu)化策略[J]. 武漢理工大學(xué)學(xué)報(bào)·交通科學(xué)與工程版,2005,29(2):315~318.