張 芳,吳 思,陳 勇,張金花,杜 凱
(國家測繪地理信息局第六地形測量隊,四川 成都 610500)
地下管線是保障城市運行的重要基礎設施和“生命線”。面對近年大雨內(nèi)澇、管線泄漏爆炸、路面塌陷等災害頻發(fā)[1],加之基礎設施容量的不斷擴大,城市管線數(shù)據(jù)精細化管理和動態(tài)調(diào)控的需求越來越高,傳統(tǒng)的地下管網(wǎng)二維數(shù)據(jù)表達模式難以對錯綜復雜的地下管網(wǎng)綜合信息進行有效的空間描述和信息表達[2-3]。地下管網(wǎng)三維可視化能夠提高管線的立體感和逼真感,有利于全面、真實反映地下管網(wǎng)縱橫交錯、上下起伏的空間關(guān)系[4-6],因而成為新興的管線數(shù)據(jù)展示與管理方式。
目前,我國已有多個城市建立了三維可視化的地下管網(wǎng)信息管理系統(tǒng),這些系統(tǒng)研發(fā)的基礎平臺大多以商業(yè)地理信息平臺Skyline為主[7-8],但由于Skyline平臺昂貴,且限于該平臺本身的技術(shù)瓶頸,現(xiàn)有的地下管網(wǎng)三維可視化系統(tǒng)仍存在管網(wǎng)附屬物
表達失真、成果加載和顯示效率欠佳等問題。隨著虛擬仿真技術(shù)的快速發(fā)展,OpenSceneGraph(OSG)作為一個開源的三維圖形渲染引擎,正逐漸被應用于水利工程[9]、校園漫游[10]、地下管網(wǎng)[11]等多個行業(yè)。其中,以OSG為基礎平臺的地下管網(wǎng)三維可視化平臺研發(fā),現(xiàn)階段也僅實現(xiàn)了地下管網(wǎng)管體本身的立體展示,不包含地表及地上建筑、景觀等模型,且缺乏專業(yè)的空間查詢與分析功能。
因此,本文以OSG為基礎平臺,采用OpenGL和標準C++語言設計的三維渲染引擎,從底層自主構(gòu)建地上地下一體化的管網(wǎng)三維可視化平臺,通過調(diào)用天地圖數(shù)據(jù)服務,實現(xiàn)地下管網(wǎng)與多源地上數(shù)據(jù)的無縫集成、聯(lián)動和高效展示,并提供了豐富的專業(yè)管網(wǎng)分析功能,為地下管線普查成果的即時展示與管理奠定了良好的基礎。
OSG是一個開源的三維圖形渲染引擎,它包含了一系列的開源圖形庫,主要為圖形圖像應用程序的開發(fā)提供場景管理和圖形渲染優(yōu)化的功能,讓程序員能夠更加快速、便捷地創(chuàng)建高性能、跨平臺的交互式圖形程序。它作為中間件為應用軟件提供了各種高級渲染特性、IO,以及空間結(jié)構(gòu)組織函數(shù)。OSG以場景樹結(jié)構(gòu)對三維模型進行組織與管理,場景中的模型、地形、陰影等均以場景樹節(jié)點的形式存在。OSG運行體系由OSG核心庫、NodeKits庫、OSG插件、互操作庫、擴展程序和示例5大動態(tài)鏈接庫(或共享對象)及可執(zhí)行文件組成[12]。其采用標準C++和OpenGL編寫而成,可運行在所有的Windows平臺、OSX、GNU/Linux、IRIX、Solaris、HP-Ux、AIX、Android和FreeBSD操作系統(tǒng)之上,具有廣泛的應用前景。
1.2.1 數(shù)據(jù)分層分塊高效加載
由于管網(wǎng)三維可視化平臺涉及地下管網(wǎng)、地表高程及地面遙感影像等數(shù)據(jù),數(shù)據(jù)量大,直接影響系統(tǒng)運行效率。為使系統(tǒng)運行更為流暢,用于制作三維地形場景的遙感影像及高程數(shù)據(jù)采用傳統(tǒng)的數(shù)字城市分塊數(shù)據(jù)動態(tài)加載。地下管網(wǎng)則采用分層動態(tài)加載,即:將視窗顯示比例尺分為小中大3個層次,不同地下管網(wǎng)類型逐層加載和調(diào)度。第1層,僅僅加載長度占比大的排水管網(wǎng);第2層,加載通信管線及供水管線;第3層,加載顯示其他所有剩余管線,從而實現(xiàn)地下管網(wǎng)由簡單到復雜的逐層加載和調(diào)度。
1.2.2 基于GPU的管網(wǎng)實時建模與渲染
平臺突破了目前基于Open GL算法實現(xiàn)管網(wǎng)建模的現(xiàn)狀,利用現(xiàn)代的GPU強大的可編程性,通過編寫高級著色程序控制渲染管線中的各個模塊,極大地擴展了GPU的功能[13],將管網(wǎng)建模的計算任務全部交由GPU完成,大大減輕了CPU的計算負載,顯著提高了管網(wǎng)建模的速度。同時,利用GPU提供的幾何著色器自動批量生成管線的頂點數(shù)據(jù),構(gòu)建管線三角網(wǎng),進一步提高了管網(wǎng)建模效率,并能夠完成各類不同材質(zhì)、紋理、陰影的地下管線實時建模和真實感渲染,確保了地上地下一體化的高效展示。
1.2.3 基于Arcball的瀏覽交互
三維場景中的交互漫游通過改變觀察者在三維場景中的位置實現(xiàn)。當交互對象是一個三維物體時,二維屏幕與三維物體之間的交互動作則受到限制。平臺交互設計中將數(shù)學與人機交互相結(jié)合,采用基于四元數(shù)理論的ArcBall算法[14],實現(xiàn)二自由度的鼠標表達三自由度的空間旋轉(zhuǎn)。其特點在于將鼠標的拖曳運動想象成在一個投影球面上繪制弧線,并將這一運動弧線映射到實際三維場景中,通過改變視點和視角實現(xiàn)交互漫游的動作,從而靈活、穩(wěn)定、方便地表達三維對象的自由旋轉(zhuǎn)或受約束旋轉(zhuǎn)。
平臺架構(gòu)設計以“先把復雜問題簡單化,再把簡單問題深入細化”為指導思想[15],采用成熟的面向?qū)ο筌浖O計方法,在遵循業(yè)務可擴展、兼容、穩(wěn)定、安全和保密等原則下,采用統(tǒng)一的矩陣式體系結(jié)構(gòu),包括硬件層、數(shù)據(jù)層、服務層、應用層和用戶層5個層次,平臺架構(gòu)設計如圖1所示。
(1) 硬件層:包括輸入輸出設備、存儲備份設備及網(wǎng)絡設備等,是平臺有效運行的基礎。
(2) 數(shù)據(jù)層:平臺采用Oracle 11g大型關(guān)系型數(shù)據(jù)庫和文件數(shù)據(jù)庫實現(xiàn)基礎地理數(shù)據(jù)、三維模型、實景影像等的高效存儲和管理。
(3) 服務層:應用服務器采用微軟公司的IIS網(wǎng)絡信息服務,WebService通過C#語言搭建而成。
(4) 應用層:提供地上地下一體化的三維展示、聯(lián)動交互和專業(yè)分析等功能。
(5) 用戶層:為平臺用戶提供整潔美觀、簡單易用的用戶界面,為系統(tǒng)研發(fā)者組織管理應用服務提供良好的界面。
為滿足三維可視化的展示效果,并結(jié)合用戶業(yè)務需求,自上而下設計平臺功能模塊,平臺主要模塊與功能如圖2所示。
平臺以微軟公司的Visual Studio 2010為集成開發(fā)環(huán)境、.NET Framework 4.0框架為運行環(huán)境,采用MFC框架進行平臺界面的建設,以C/C++/VC++為主要語言進行功能的編碼實現(xiàn)。
場景瀏覽與交互是三維地理信息平臺最直觀的功能,主要包括:放大、縮小、環(huán)繞、地表透明度及聯(lián)動交互等。其中,放大、縮小、環(huán)繞均可通過控制Camera類進行矩陣變換,從而達到場景的動態(tài)瀏覽;地表透明度為幫助用戶查看地下管線三維場景而設置,可以通過控制osgNode:setTransparent實現(xiàn);聯(lián)動交互主要包括二三維和實景虛擬聯(lián)動等功能,可以通過osgViewer設計多個分屏,將各個分屏的視圖矩陣進行相關(guān)性操作達到多屏聯(lián)動的效果。如圖3—圖5所示。
圖1 平臺總體架構(gòu)
圖2 主要模塊與功能
圖3 地上地下一體化場景瀏覽
圖4 地下管網(wǎng)三維場景
圖5 二三維聯(lián)動
查詢統(tǒng)計模塊是根據(jù)用戶的請求,將數(shù)據(jù)服務器中用戶感興趣的地下管線數(shù)據(jù)提取出來并進行文字、表格或圖形化展示。管線類型、權(quán)屬單位、管線材質(zhì)、所屬道路、埋設類型、管點類型、附屬物類型的查詢統(tǒng)計是通過將用戶的請求轉(zhuǎn)化為SQL語句,傳遞給COracleService類,由COracleService類向服務器發(fā)送數(shù)據(jù)請求,將返回的結(jié)果傳遞給CPipeData類進行解析所得;管線信息查詢通過osgUtil獲取用戶屏幕點擊點與三維場景的交點,獲取場景中的單根管線或單個管點的信息;管線標注是通過osgText及osgWidget將場景中所有的管線或管點信息轉(zhuǎn)換為文字進行顯示。如圖6—圖7所示。
圖6 任意區(qū)域內(nèi)管點類型查詢
圖7 管線信息查詢
基本分析模塊可以計算并展示用戶所需的三維場景空間信息,主要包括:水平距離、垂直距離、空間距離及投影面積的量算。該模塊基于osgUtil:LineSegmentIntersector類進行設計,通過用戶交互事件,選擇場景中的兩個(距離量算)或多個(面積量算)點,將其轉(zhuǎn)換為osgVec3d對象,在確定線或面的位置后根據(jù)距離、面積公式進行計算,并將計算結(jié)果通過osgText及osgWidget類進行展示實現(xiàn)。如圖8—圖9所示。
平臺作為地下管網(wǎng)的應用軟件,具有豐富的專業(yè)管網(wǎng)分析功能。凈距分析、埋深分析、斷面分析功能分別基于osgUtil:LineSegmentIntersector類、osgGA:GUIEventHandler、CPipeData類進行設計,將用戶選擇的管線信息存入CPipeData中進行計算所得;碰撞分析通過獲取用戶在區(qū)域內(nèi)選擇的管線類型信息及多邊形信息,將其轉(zhuǎn)換為SQL語言,由COracleService類向應用服務器發(fā)送請求,并通過osgFX:Scribe類將碰撞點、碰撞管線進行高亮顯示;地形開挖通過osgTerrain:TerrainTile類,更換用戶劃定范圍內(nèi)的地形場景,從而實現(xiàn)模擬開挖。如圖10—圖12所示。
圖8 空間量測
圖9 面積量測
圖10 垂直凈距分析
圖11 斷面分析
圖12 碰撞分析
在地下管網(wǎng)三維可視化需求越來越大的形勢下,平臺充分利用場景性能優(yōu)越的OSG引擎進行系統(tǒng)研發(fā),不僅能夠?qū)崿F(xiàn)管網(wǎng)本體與多源地上數(shù)據(jù)的一體化三維高效展示,而且具備專業(yè)的管網(wǎng)分析功能,脫離了長期依賴國外商業(yè)軟件的弊端,具有顯著的經(jīng)濟效益和實用推廣價值。下一步將結(jié)合管網(wǎng)的業(yè)務需求,深入研究管網(wǎng)在城市規(guī)劃與災害應急管理領域的功能研發(fā)。