王子啟
(1.山東正元地球物理信息技術(shù)有限公司,山東 濟南250101)
城市地下管線是城市基礎(chǔ)設(shè)施的重要組成部分,是保證城市生產(chǎn)、生活正常運轉(zhuǎn)的重要基礎(chǔ)條件,是城市安全與繁榮的根基,是城市的“生命線”和“血脈”,也是城市規(guī)劃、建設(shè)和管理的基礎(chǔ)資料和公眾共享的信息資源。然而,地下管線錯綜復(fù)雜,走向、管徑、埋深以及管線交界處的管點各異,且數(shù)據(jù)量巨大,采用傳統(tǒng)的三維建模軟件進行人工建模,工作效率低下。
在綜合分析管線數(shù)據(jù)的基礎(chǔ)上,本文設(shè)計了以WGS84為坐標系的城市地下管線動態(tài)三維建模方法。通過分析不難發(fā)現(xiàn),地下管線有其共性:對于管線來說,其三維表現(xiàn)均為圓柱形和方形,區(qū)別在于走向、管徑、紋理和形狀不同;對于管點來說,均為點狀模型,區(qū)別在于形狀、方向和套合不同。點圖層數(shù)據(jù)中的閥門、管井等復(fù)雜模型可通過3ds Max等建模軟件建模后導(dǎo)入,但轉(zhuǎn)彎、三通以及多通的部分角度多變、情況復(fù)雜[1]。設(shè)計和開發(fā)城市地下管線三維成圖組件,能實現(xiàn)具有較好展示效果的管線三維動態(tài)建模,并能對外提供自動化成圖和更新維護的Web服務(wù)接口,便于其他相關(guān)應(yīng)用的調(diào)用。
從自動化程度來看,管線三維建模方法可分為人工建模和自動化建模[2],人工建模雖然模型精細,但工作量巨大,且城市管線場景大,需要分區(qū)協(xié)同作業(yè),接邊整合的工作量無謂增加,效率低、成本高和周期長的問題非常突出;自動化建模主要是通過在系統(tǒng)中自動調(diào)用閥門、水表等點狀固定點精細模型實現(xiàn),但彎頭、多通接合部位無法精確設(shè)計模型,顯示效果較差,細節(jié)上與人工建模有很大差距,因此盡可能提高建模精度和自動化程度是地下管線三維建模首選的技術(shù)方法。另外,采用B/S架構(gòu)的管線三維信息化應(yīng)用系統(tǒng),不論是基于SkyLine還是SuperMap等平臺,均需使用相應(yīng)的專用工具發(fā)布地圖服務(wù),每次數(shù)據(jù)更新都需要處理相應(yīng)的工程文件,人工發(fā)布服務(wù),無法實現(xiàn)在線的二三維數(shù)據(jù)實時更新和可視化顯示。
1)建立模型庫和紋理庫。地下管線是由管點、管線按一定連接關(guān)系構(gòu)成的線,代表實際管線的走向。閥門、窨井等管點利用3ds Max軟件建立相應(yīng)的管點模型[3],形成固態(tài)模型的一系列文件,格式為xpl。管線則通過不同的紋理區(qū)分種類,參考相關(guān)標準中管線表達的顏色要求,在畫圖工具中形成一系列紋理文件,格式為bmp,供組件調(diào)用。
2)對管線探測成果庫數(shù)據(jù)進行預(yù)處理。首先將管線屬性數(shù)據(jù)預(yù)處理為矢量數(shù)據(jù),再基于二維管線矢量數(shù)據(jù),根據(jù)各類管線點和管線段的特點,通過空間、屬性和材質(zhì)信息映射,實時驅(qū)動生成地下管線三維模型[4]。對于管線數(shù)據(jù),根據(jù)管徑動態(tài)生成三維管線(圓形或方形),并根據(jù)管線類型動態(tài)粘貼紋理;對于管點數(shù)據(jù),根據(jù)其附屬物和特征,動態(tài)選定管點模型導(dǎo)入,并根據(jù)提取的參數(shù),確定其位置和方向,套合管的尺寸等信息。進一步優(yōu)化彎頭、多通接頭等模型的角度和拼接,以保證三維模型的生成速度和準確性。
3)基于生成的三維數(shù)據(jù),開發(fā)直接操作數(shù)據(jù)庫表生成三維實體的相關(guān)功能,并進一步封裝,形成服務(wù)器端的組件接口服務(wù)。
4)實現(xiàn)三維管線數(shù)據(jù)的在線更新。通過參數(shù)控制覆蓋、追加或刪除,實現(xiàn)二三維管線數(shù)據(jù)的同步動態(tài)更新。數(shù)據(jù)庫中的數(shù)據(jù)更新后,自動刷新服務(wù)重新獲取最新數(shù)據(jù)進行展示,無需重新發(fā)布地圖服務(wù)。
基于SkyLine平臺開發(fā)的B/S三維應(yīng)用系統(tǒng),是在C/S系統(tǒng)中生成三維數(shù)據(jù),再人工發(fā)布到服務(wù)器端,不能實現(xiàn)在服務(wù)器端的實時編輯和更新。因此,為了實現(xiàn)組件成圖服務(wù)和在線動態(tài)更新,本文分析了SkyLine客戶端的成圖接口和參數(shù),開發(fā)了成圖相關(guān)功能,實現(xiàn)了在服務(wù)器端的在線更新。
1)SkyLine客戶端組件成圖。繪制三維物體時,為了提高物體圖形的真實感,除進行投影變換和消隱處理外,還需采用合理的光照模型進行光照,利用紋理映射技術(shù)模擬物體表面的紋理細節(jié),使計算機繪制出的物體更加接近實際物體。具體的原理和步驟為:①透視投影;②方管線采用四方體建模,圓管線采用圓柱建模;③管線采用光照加材質(zhì)渲染;④管線段之間采用固化點模型和部件模型來銜接。
2)通過分析總結(jié)數(shù)據(jù)庫三維數(shù)據(jù)表發(fā)現(xiàn),每條記錄對應(yīng)一個三維實體,進一步厘清各數(shù)據(jù)項的含義。管點三維實體記錄結(jié)構(gòu)如圖1所示,管線三維實體記錄結(jié)構(gòu)如圖2所示。其中,比較關(guān)鍵的是Yaw、Pitch和Roll三個角度,Pitch(俯仰角)圍繞X軸旋轉(zhuǎn),Yaw(偏航角)圍繞Y軸旋轉(zhuǎn),Roll(翻滾角)圍繞Z軸旋轉(zhuǎn);Length(長度)、Fillcolor(填充色)、Linecolor(線顏色)等為其他三維屬性。只要給所有屬性賦予正確的值,并作為一條記錄插入三維表中,即可在SkyLine中可視化顯示該三維實體。
圖1 管點三維實體記錄結(jié)構(gòu)圖
圖2 管線三維實體記錄結(jié)構(gòu)圖
3)參考SkyLine客戶端成圖相關(guān)的接口和參數(shù),在坐標轉(zhuǎn)換組件的參與下,計算得到表達三維管點和管線每個實體的所有屬性數(shù)據(jù)項,并直接操作對應(yīng)的三維數(shù)據(jù)表,通過數(shù)據(jù)庫記錄的增、刪、改來實現(xiàn)相應(yīng)的三維實體操作。
4)組件封裝,實現(xiàn)在服務(wù)器端運行的自主開發(fā)的成圖服務(wù)Web接口。
為了實現(xiàn)真正與SkyLine的函數(shù)計算結(jié)果一致,消除誤差,必須實現(xiàn)SkyLine在WGS84和西安1980兩個坐標系之間的高精度轉(zhuǎn)換[5]。首先將WGS84坐標系轉(zhuǎn)換為空間直角坐標系,并基于最小二乘法求解布爾莎七參數(shù);再進行布爾莎七參數(shù)模型轉(zhuǎn)換和高斯投影坐標轉(zhuǎn)換。本文開發(fā)了坐標轉(zhuǎn)換組件,用以求解準確長度和角度等三維屬性信息,做到cm級正反算的無損轉(zhuǎn)換。
模型庫中除精細化的閥門等固態(tài)化模型外,還增加了專用于接合處的部件模型。準確提取和計算不規(guī)則結(jié)合處的相關(guān)參數(shù),確定其位置與方向,實現(xiàn)準確擺放。當多個部件模型整合顯示時,點線的套合效果非常好。只是該管點位置對應(yīng)了多個部件模型,需做好實體標識。
本文以ArcSDE為空間數(shù)據(jù)引擎,以PostgreSQL為數(shù)據(jù)庫管理軟件,以SkyLine為三維可視化平臺,實現(xiàn)了服務(wù)器端的三維成圖以及在線數(shù)據(jù)更新功能。成圖的關(guān)鍵在于計算Yaw、Pitch、Roll等三維屬性值,本文在ArcGIS的SDE空間數(shù)據(jù)庫中二維數(shù)據(jù)表的基礎(chǔ)上,直接操控數(shù)據(jù)庫,形成管點與管線的三維數(shù)據(jù)表。對于多通等模型庫無法支持的細節(jié),通過優(yōu)化點模型與線模型來整合顯示。
在組件設(shè)計方面,為了方便客戶端通過Web方式調(diào)用,本文對比了3種設(shè)計方案。
1)ActiveX控件開發(fā)。其優(yōu)點為ActiveX控件是分布式對象技術(shù),能保護開發(fā)者以前的投資,是開放的技術(shù),既包容現(xiàn)有標準又鼓勵第三方的參與;其缺點為ActiveX控件體積可能過于龐大,客戶端部署困難、下載速度較慢,支持ActiveX的平臺僅限于Windows系列,平臺無關(guān)性弱,開發(fā)和維護較困難。
2)將組件注冊為后臺服務(wù),Web客戶端通過數(shù)據(jù)庫傳遞參數(shù),服務(wù)器端組件服務(wù)程序?qū)崟r監(jiān)聽數(shù)據(jù)庫表參數(shù)變化,自動進行處理。其優(yōu)點為開發(fā)維護較容易,調(diào)用方便,將請求寫入數(shù)據(jù)庫即可;其缺點為增加了服務(wù)器資源占用,安全性不高。
3)采用Web Service技術(shù)開發(fā)。其優(yōu)點為Web Services是自包含、可自我描述、可跨平臺和跨語言的,部署較靈活,升級和維護Web服務(wù)簡單、方便,可實現(xiàn)多數(shù)據(jù)、多服務(wù)的聚合,與其他系統(tǒng)接口耦合度低,使用SOAP協(xié)議通信,封裝了XML格式的數(shù)據(jù),以ASCII文本的方式傳輸而非二進制,調(diào)試方便;其缺點為單機應(yīng)用程序不適合使用Web Service,局域網(wǎng)的同構(gòu)應(yīng)用程序采用DCOM會比SOAP/HTTP高效。
綜合分析本組件開發(fā)需求,本文采用Web Service技術(shù)進行開發(fā)。具體開發(fā)步驟為:客戶端→閱讀WSDL文檔(根據(jù)文檔生成SOAP請求)→發(fā)送到Web服務(wù)器→傳輸給Web Service請求處理器(ISAPI Extension)→處理SOAP請求→調(diào)用Web Service→生成SOAP應(yīng)答→Web服務(wù)器通過HTTP的方式反饋給客戶端。
本文開發(fā)的組件的主要功能是實現(xiàn)管線從二維到三維的自動化[6],再通過SkyLine平臺展示為服務(wù)器端的三維數(shù)據(jù)服務(wù),并能為JS腳本所調(diào)用,如圖3所示。
圖3 系統(tǒng)框架圖
管線數(shù)據(jù)自動化三維成圖組件應(yīng)具有的功能如表1所示。
表1 管線數(shù)據(jù)自動化三維成圖組件主要功能列表
1)建立模型庫和紋理庫。管線種類通過不同的紋理區(qū)分,根據(jù)管類形成不同顏色的一系列紋理文件;閥門、窨井等管點則形成相應(yīng)的固態(tài)模型文件。以閥門為例,對應(yīng)的xpl文件在SkyLine中加載,如圖4所示。除固態(tài)模型外,組件還增加了部件模型文件,專用于轉(zhuǎn)彎、多通等接合處的模型拼接,如圖5所示。
圖4 三維模型庫(固態(tài)模型)
圖5 三維模型庫(部件模型)
2)管線數(shù)據(jù)預(yù)處理。將采集的管點、管線屬性數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫,調(diào)用該組件數(shù)據(jù)訪問接口,導(dǎo)入數(shù)據(jù)連接參數(shù),測試數(shù)據(jù)連接是否正常;在數(shù)據(jù)連接正常的情況下,調(diào)用該組件數(shù)據(jù)核查接口,依據(jù)相關(guān)標準規(guī)范對預(yù)處理數(shù)據(jù)進行核查質(zhì)檢,生成相應(yīng)質(zhì)檢報告(質(zhì)檢結(jié)果不通過時需人工處理,不含在本次開發(fā)內(nèi)容中);質(zhì)檢合格后[7],可調(diào)用該組件數(shù)據(jù)預(yù)處理接口,后臺自動將管點、管線屬性數(shù)據(jù)根據(jù)坐標生成矢量數(shù)據(jù)存儲在ArcSDE空間數(shù)據(jù)庫表中[8]。
3)生成管點、管線三維數(shù)據(jù)并在線更新。調(diào)用組件自動化三維管線成圖接口[9],后臺根據(jù)相關(guān)參數(shù)自動將預(yù)處理好的管點、管線數(shù)據(jù)生成SkyLine平臺中可調(diào)用的管線三維模型實體記錄。通過參數(shù)控制覆蓋、追加或更新,實現(xiàn)管線數(shù)據(jù)動態(tài)更新。
4)刷新數(shù)據(jù)。調(diào)用組件的刷新接口,后臺自動刷新三維數(shù)據(jù)庫表,實現(xiàn)三維管線更新數(shù)據(jù)的實時顯示。
1)通用接口,名稱為OpenSDEWorkspace,負責(zé)打開ArcSDE空間數(shù)據(jù)庫工作空間。返回true表示成功,返回false表示失敗。
2)管點操作插入接口,名稱為Insert_Point_Feature,負責(zé)將二維管點圖層中指定條件的對象插入到三維管點圖層中。返回true表示成功,返回false表示失敗。其參數(shù)說明如表2所示。
表2 管點操作插入接口參數(shù)說明
3)管點操作更新接口,名稱為Update_Point_Feature,負責(zé)將二維管點圖層中指定條件的對象更新到三維管點圖層中。返回true表示成功,返回false表示失敗。其參數(shù)說明如表3所示。
表3 管點操作更新接口參數(shù)說明
4)管點操作刪除接口,名稱為Delete_Point_Feature,負責(zé)在三維管點圖層中刪除指定條件的對象。返回true表示成功,返回false表示失敗。其參數(shù)說明如表4所示。
表4 管點操作刪除接口參數(shù)說明
5)管線操作插入接口,名稱為Insert_Line_Feature,負責(zé)將二維管線圖層中指定條件的對象插到三維管線圖層中。返回true表示成功,返回false表示失敗。其參數(shù)說明如表5所示。
表5 管線操作插入接口參數(shù)說明
6)管線操作更新接口,名稱為Update_Line_Feature,負責(zé)將二維管線圖層中指定條件對象更新到三維管線圖層中。返回true表示成功,返回false表示失敗。其參數(shù)說明如表6所示。
表6 管線操作更新接口參數(shù)說明
7)管線操作刪除接口,名稱為Delete_Line_Feature,負責(zé)在三維管線圖層中刪除指定條件的對象。返回true表示成功,返回false表示失敗。其參數(shù)說明如表7所示。
表7 管線操作刪除接口參數(shù)說明
8)圖層刷新接口,名稱為Refresh,負責(zé)刷新指定圖層。返回true表示成功,返回false表示失敗。其參數(shù)說明如表8所示。
表8 圖層刷新接口參數(shù)說明
利用組件開發(fā)測試工具,調(diào)用組件服務(wù),基于部分數(shù)據(jù)的三維成圖效果(未優(yōu)化)如圖6所示;第三方應(yīng)用調(diào)用效果(優(yōu)化后)如圖7所示;生成的圖形細節(jié)如圖8所示。
圖6 數(shù)據(jù)成圖效果
圖7 應(yīng)用調(diào)用效果圖
圖8 三維展示效果
本文在總結(jié)現(xiàn)有三維管線系統(tǒng)自動建模的基礎(chǔ)上,以PostgreSQL為數(shù)據(jù)庫管理軟件,以ArcSDE為空間數(shù)據(jù)引擎,以SkyLine為三維可視化平臺,利用ArcGIS Server WFS 服務(wù)開發(fā)了城市地下管線三維成圖組件,提供了可供Web應(yīng)用、桌面應(yīng)用、移動端應(yīng)用的多平臺調(diào)用接口。利用該組件能更好地實現(xiàn)管線三維動態(tài)建模以及在線實時更新。實踐表明,該組件具有以下特色:
1)人工建模與自動化建模相結(jié)合,優(yōu)化處理固態(tài)模型無法準確表達的彎頭、多通等空間角度多變的細節(jié)部分,整體的三維展示效果有較大提升。
2)基于Web服務(wù)的架構(gòu),可便于城市管線相關(guān)應(yīng)用調(diào)用。
3)可擴展可定制管線數(shù)據(jù)種類及其相關(guān)屬性信息(材質(zhì)、特征等),隨著城市發(fā)展可滿足相應(yīng)的變更需求。
4)通過預(yù)處理功能進一步檢查和優(yōu)化外業(yè)探測成果,提高了數(shù)據(jù)質(zhì)量和三維成圖速度。
5)組件直接操控空間數(shù)據(jù)庫,并利用SkyLine可視化機制,實現(xiàn)了在線的數(shù)據(jù)更新和服務(wù)更新,無需數(shù)據(jù)更新后重新發(fā)布服務(wù),提高了成圖效率和客戶體驗的及時性,簡化了數(shù)據(jù)更新服務(wù)的過程。