尹志永,王濤,周磊,黎慕韓
(天津市測繪院,天津 300381)
城市地下綜合管網(wǎng)是城市重要的基礎(chǔ)設(shè)施,擔(dān)負(fù)著信息傳輸、能源輸送等工作,隨著城市化進程的加快,目前我國許多城市已形成大規(guī)模、縱橫交錯的地下管網(wǎng)。很多城市因此建立了地下管線信息系統(tǒng)以對地下管網(wǎng)進行科學(xué)、信息化管理,但這些系統(tǒng)大多數(shù)是二維的,不能清晰直觀地顯示空間層次復(fù)雜的地下管網(wǎng)。三維管線模型能直觀地描述城市地下管線間縱橫交錯、上下起伏的空間關(guān)系,具有較強的立體感和逼真感,有利于真實全面地反映地下管網(wǎng)的分布狀況,因而城市三維管線信息系統(tǒng)的研制非常必要。城市三維管線信息系統(tǒng)利用三維可視化技術(shù),將地下管網(wǎng)以三維模型的形式直觀地表現(xiàn)出來,為市政各部門提供準(zhǔn)確的管線信息以輔助分析與決策。
在技術(shù)上,開發(fā)三維管線信息系統(tǒng)一般有數(shù)學(xué)類技術(shù)和基于已有三維GIS平臺進行二次開發(fā)兩種途徑。其中,數(shù)學(xué)類技術(shù)主要利用計算機圖形學(xué)及相關(guān)數(shù)學(xué)知識,結(jié)合OpenGL、DirectX等技術(shù)從底層進行管線建模及三維場景管理?;谝延腥SGIS平臺上進行二次開發(fā)通常存在后期信息處理量大、接口擴展困難、開發(fā)成本較高等缺點,因而基于OpenGL或DirectX的數(shù)學(xué)類技術(shù)成為三維管線系統(tǒng)開發(fā)的較佳選擇。OpenSceneGraph(簡稱OSG)是一套開源、免費的三維場景圖形開發(fā)庫,它是基于工業(yè)標(biāo)準(zhǔn)OpenGL的軟件接口,實現(xiàn)了對OpenGL的完全類封裝,建立了面向?qū)ο蟮目蚣埽钩绦騿T能快速便捷地創(chuàng)建高性能、跨平臺的三維交互式圖形程序。隨著虛擬仿真技術(shù)的發(fā)展,OSG已在三維地理信息系統(tǒng)、計算機輔助設(shè)計、科學(xué)與工業(yè)數(shù)據(jù)可視化、網(wǎng)絡(luò)游戲等多個行業(yè)得到廣泛應(yīng)用。
要建立三維管線信息系統(tǒng),主要需解決管線三維建模,三維數(shù)據(jù)可視化及管理兩個難題。本系統(tǒng)建立過程中,三維管線建模利用的是基于3ds Max SDK開發(fā)的自動建模插件,采用VC++在MFC框架下基于OSG引擎開發(fā)三維管線信息系統(tǒng)。
城市地面建筑的三維數(shù)據(jù)可通過LiDAR技術(shù)直接獲取,而三維形式的地下管線數(shù)據(jù)尚無直接獲取手段,只能從管線屬性數(shù)據(jù)中提取相應(yīng)的屬性來模擬實現(xiàn)管線的三維可視化。通常城市地下管線數(shù)據(jù)存儲形式為屬性信息與圖形信息并行存儲,即以數(shù)據(jù)庫文件(如Access的MDB文件)存儲屬性信息,以圖形文件(如CAD的DWG文件)存儲圖面信息。
三維管線模型和三維附屬設(shè)施模型統(tǒng)稱三維管網(wǎng)模型。管網(wǎng)數(shù)據(jù)的三維建模利用專業(yè)的三維建模及渲染軟件3ds Max制作,宜采用自動化方式,具體實現(xiàn)則是利用3ds Max SDK技術(shù)開發(fā)自動建模插件。建模插件開發(fā)的原理是:從MDB文件讀取管網(wǎng)數(shù)據(jù)的屬性信息及坐標(biāo)值,包括:管點平面坐標(biāo)及高程,管點特征,附屬設(shè)施的類別,管線尺寸、材質(zhì)、埋設(shè)方式等屬性,再調(diào)用3ds Max函數(shù)庫的相應(yīng)接口自動解算出管線的長度、走向及角度等屬性并生成與實地相符的管網(wǎng)模型;對于種類繁多、構(gòu)造各異的附屬設(shè)施,通過在3ds Max中創(chuàng)建設(shè)施模型庫,在批量生成時從設(shè)施模型庫中調(diào)用即可自動完成。本系統(tǒng)包括了自主開發(fā)的管網(wǎng)自動建模插件,如圖1所示。在利用插件自動制作管網(wǎng)模型的過程中,賦予每個管網(wǎng)模型唯一的標(biāo)識符,該標(biāo)識符與MDB數(shù)據(jù)庫中管線或附屬設(shè)施的ID號一一對應(yīng),將用于應(yīng)用系統(tǒng)的查詢及統(tǒng)計功能模塊。
利用與3ds Max版本相匹配的OSG Export for max9插件,將創(chuàng)建的管網(wǎng)模型整體導(dǎo)出為OSG內(nèi)部支持的IVE格式,IVE格式是二進制的,具有讀寫快速、易操作的特點,三維模型導(dǎo)出如圖2所示。該OSG Export插件可從網(wǎng)上免費下載。
圖1 管網(wǎng)自動建模插件
圖2 三維管網(wǎng)模型導(dǎo)出
OSG主要為圖形圖像應(yīng)用程序的開發(fā)提供場景管理和圖形渲染優(yōu)化功能,它使用可移植的ANSI C++編寫而成,并使用已成為工業(yè)標(biāo)準(zhǔn)的OpenGL底層渲染API。OSG作為中間件為應(yīng)用軟件提供了各種高級渲染特性、IO及空間結(jié)構(gòu)組織函數(shù)。OSG以場景樹結(jié)構(gòu)對三維模型進行組織與管理,場景中的模型、地形、陰影等均以場景樹節(jié)點的形式存在。OSG運行時文件由一系列動態(tài)鏈接庫(或共享對象)及可執(zhí)行文件組成,這些鏈接庫可分為5大類,共同構(gòu)成了OSG的運行體系,鏈接庫的功能如表1所示。
OSG鏈接庫功能表 表1
基于OSG引擎開發(fā)三維系統(tǒng)所用到的關(guān)鍵技術(shù)有:
(1)場景裁減。對一個龐大的三維系統(tǒng)而言,往往存在大量無助于最終渲染結(jié)果的對象,把無用的對象從場景結(jié)構(gòu)中暫時剔除,將剩余有效的場景對象發(fā)送到OpenGL渲染管道,即只把最終為終端用戶所看到的對象發(fā)送到渲染管道。
(2)細(xì)節(jié)層次節(jié)點LOD(level of details)。LOD技術(shù)指,在場景中離視點較遠(yuǎn)的區(qū)域分辨率較低,離視點較近的區(qū)域分辨率較高,而且隨著視點的改變場景的變化具有連續(xù)性。當(dāng)物體僅覆蓋較小區(qū)域時,可用粗略模型來繪制,既不影響視覺效果,又可提高繪制效率。OSG內(nèi)部采用PagedLOD分頁數(shù)據(jù)庫調(diào)度策略,不一次性將數(shù)據(jù)全部調(diào)入,而是根據(jù)視點需要,實時從外存調(diào)入相應(yīng)的數(shù)據(jù),從而實現(xiàn)大范圍地形的流暢渲染。
(3)數(shù)據(jù)動態(tài)調(diào)度。上述兩種技術(shù)都不能從根本上解決在內(nèi)存中可能要存儲海量數(shù)據(jù)這一問題,因此數(shù)據(jù)的動態(tài)調(diào)度尤為重要,在顯示當(dāng)前視域的同時,判斷下一步可能要載入的數(shù)據(jù),做出正確的加載和卸載處理,確保內(nèi)存中始終維持有限的數(shù)據(jù)額度。
三維管線信息系統(tǒng)的框架由三部分構(gòu)成:數(shù)據(jù)層、驅(qū)動層和應(yīng)用層,其系統(tǒng)結(jié)構(gòu)如圖3所示。
圖3 三維管線信息系統(tǒng)體系結(jié)構(gòu)
(1)數(shù)據(jù)層。系統(tǒng)所用數(shù)據(jù)包括3類:屬性數(shù)據(jù)MDB文件、三維管網(wǎng)模型和三維地形模型。MDB數(shù)據(jù)庫文件作為屬性文件供系統(tǒng)查詢、統(tǒng)計等功能使用,而三維管網(wǎng)模型的創(chuàng)建前文已予以論述。三維地形模型也是系統(tǒng)不可缺少的部分,其與作為核心的管網(wǎng)模型共同構(gòu)成了場景數(shù)據(jù)源。三維地形模型由地表DOM與表達(dá)地形起伏的DEM融合而成,其構(gòu)建工具為VPB,下文將對VPB進行闡述。
(2)驅(qū)動層。通過OSG三維渲染引擎對場景數(shù)據(jù)進行渲染和顯示,為用戶提供一個動態(tài)的、具有空間參考的三維交互式立體環(huán)境。
(3)應(yīng)用層。提供三維管網(wǎng)模型在三維地形環(huán)境下的動態(tài)瀏覽、交互式漫游、數(shù)據(jù)查詢、數(shù)據(jù)統(tǒng)計輸出、數(shù)據(jù)管理等功能。
VirtualPlanetBuilder(簡稱VPB)是基于OSG的三維地形數(shù)據(jù)生成工具,利用VPB工具,輸入影像數(shù)據(jù)及高程數(shù)據(jù)后可高效的構(gòu)建出各種規(guī)模的分塊分頁地形數(shù)據(jù)庫。VPB是開源工具,其與OSG緊密結(jié)合所生成的瓦片數(shù)據(jù)可保存在本地計算機上進行快速瀏覽,且具備TB級的數(shù)據(jù)處理能力。VPB以開源的柵格空間數(shù)據(jù)和影像數(shù)據(jù)讀寫庫GDAL作為支撐,所以其支持的數(shù)據(jù)格式多達(dá)數(shù)十種。VPB支持多數(shù)據(jù)源的自動處理,在命令行窗口下使用VPB中的vpbmaster程序制作三維地形數(shù)據(jù)庫。構(gòu)建的三維地形模型以O(shè)SG內(nèi)部支持的二進制IVE格式寫到硬盤,可快速的加載到OSG場景中以供瀏覽和漫游。本系統(tǒng)所用的影像數(shù)據(jù)是2.5 m的SPOT 5彩色影像,高程數(shù)據(jù)分辨率是25 m。
應(yīng)用系統(tǒng)采用VC2010開發(fā)平臺的MFC框架,結(jié)合OSG引擎開發(fā)。VC2010包含的MFC Feature Pack功能包對傳統(tǒng)MFC庫進行了擴展,開發(fā)出的應(yīng)用程序具有類似新版Visual Studio、Microsoft Office或Internet Explorer等流行界面的視覺效果。應(yīng)用系統(tǒng)功能界面如圖4所示。
圖4 三維管線信息系統(tǒng)
系統(tǒng)功能主要包括:動態(tài)瀏覽、場景漫游、基本查詢及標(biāo)注、地物定位及收藏、數(shù)據(jù)統(tǒng)計、專題圖表輸出及數(shù)據(jù)管理。
(1)動態(tài)瀏覽。具有多視角切換的動態(tài)瀏覽功能,場景視窗可自定義放大、縮小。該功能是通過實時修改場景照相機Camera類、觀察矩陣(觀察者的位置和姿態(tài))的方式來實現(xiàn)平滑的動態(tài)瀏覽。
(2)場景漫游。本系統(tǒng)中場景漫游方式包括3種:軌跡球方式、步行方式及自定義路徑飛行方式。軌跡球方式為OSG系統(tǒng)自帶的。步行方式和自定義路徑飛行方式的實現(xiàn)通過對OSG API中的GUIEventHandler和CameraManipulator類的繼承來實現(xiàn)。自定義路徑飛行方式可按設(shè)計路徑進行飛行漫游,功能較實用。
(3)基本查詢及標(biāo)注。打開工程時,存儲管網(wǎng)對象屬性的MDB文件也同步加載。三維管網(wǎng)對象與MDB屬性數(shù)據(jù)庫通過唯一標(biāo)識符一一對應(yīng),當(dāng)點擊(或捕捉)到某一模型對象時,圖形系統(tǒng)返回對象的唯一標(biāo)識符,通過該標(biāo)識符程序從MDB數(shù)據(jù)庫中通過SQL語言檢索出其屬性并顯示出來,并可按用戶的定制要求在視窗中立體標(biāo)注。三維場景中對象的捕捉通過對OSG API中的GUIEventHandler的繼承來實現(xiàn),文字標(biāo)注則用到了HUD(抬頭顯示)技術(shù)。
(4)地物定位及收藏。三維場景中模型對象的快速定位是常見而實用的功能,本系統(tǒng)通過給定對象的標(biāo)識符可自動定位對象并使其居中顯示。收藏功能則是將感興趣對象添加入系統(tǒng)收藏夾,點擊收藏節(jié)點即可自動定位到興趣對象上。
(5)數(shù)據(jù)統(tǒng)計及專題圖表輸出。通過SQL語言從MDB數(shù)據(jù)庫中檢索出符合條件的管網(wǎng)對象并進行統(tǒng)計,生成各種統(tǒng)計圖表并輸出。本系統(tǒng)還具有專題斷面圖繪制功能,具有場景截圖功能。
(6)數(shù)據(jù)管理。對工程中包含的管網(wǎng)模型,三維地形數(shù)據(jù)及MDB屬性文件進行維護及管理。
在目前基于三維GIS平臺開發(fā)三維管線信息系統(tǒng)存在成本高、不易擴展、技術(shù)尚不成熟的情況下,充分利用開源的、開發(fā)難度不高、場景性能優(yōu)越的OSG引擎開發(fā)應(yīng)用系統(tǒng)則具有實用性、經(jīng)濟性的意義。通過調(diào)用OSG API實現(xiàn)三維場景的動態(tài)渲染和顯示,使該系統(tǒng)具有良好的交互式三維可視化效果。將MDB數(shù)據(jù)庫中對象屬性與三維管網(wǎng)模型進行映射,通過SQL技術(shù)實現(xiàn)三維模型的查詢、統(tǒng)計及輸出,實現(xiàn)了三維模型的信息化,使得本系統(tǒng)具有初步的信息系統(tǒng)特點,奠定了三維信息管理的基礎(chǔ)。
本系統(tǒng)還有許多方面有待進一步研究和開發(fā),主要有:系統(tǒng)數(shù)據(jù)不包含地上建筑、景觀等模型,導(dǎo)致場景內(nèi)容不夠豐富;系統(tǒng)尚不具備嚴(yán)格的GIS功能(如空間查詢,管網(wǎng)對象的空間分析),如何將成熟的二維GIS組件技術(shù)引入到系統(tǒng)中來也值得研究。
[1]張文元,付仲良.基于ArcGIS Engine的綜合管線三維可視化研究[J].測繪通報,2008(8):28~31.
[2]王銳,錢學(xué)雷.OpenSceneGraph三維渲染引擎設(shè)計與實踐[M].北京:清華大學(xué)出版社,2009.
[3]王貴武,解智強,李世強等.利用海量探測數(shù)據(jù)實現(xiàn)昆明市地下管線三維建模的應(yīng)用研究[J].測繪科學(xué),2009,34(6):122~124.
[4]羅勝.3ds max SDK插件開發(fā)技術(shù)[J].機床與液壓,2003(6):242~244.
[5]萬定生,徐亮.基于OSG的水利工程三維可視化系統(tǒng)研究與應(yīng)用[J].計算機與數(shù)字工程,2009,37(4):135~138.
[6]OpenSceneGraph 中文網(wǎng)站.http://www.osgchina.org.
[7]李新放,劉海行,周林等.基于OpenSceneGraph的海洋環(huán)境三維可視化系統(tǒng)研究[J].海洋科學(xué),2012,36(1):54~58.
[8]祖為國,鄧非,梁經(jīng)勇.海量三維GIS數(shù)據(jù)可視化系統(tǒng)的實現(xiàn)研究[J].測繪通報,2008(7):39~41.
[9]廉光偉.基于OSG的三維地籍信息系統(tǒng)設(shè)計與實現(xiàn)[J].城市勘測,2011(5):32~40.
[10]熊自明,葛文,吳紹民等.城市三維地下管網(wǎng)信息系統(tǒng)研究與實現(xiàn)[J].信息工程大學(xué)學(xué)報,2010(1):59~62.