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

圖1 平臺總體架構

圖2 主要模塊與功能

圖3 地上地下一體化場景瀏覽

圖4 地下管網三維場景

圖5 二三維聯動
查詢統計模塊是根據用戶的請求,將數據服務器中用戶感興趣的地下管線數據提取出來并進行文字、表格或圖形化展示。管線類型、權屬單位、管線材質、所屬道路、埋設類型、管點類型、附屬物類型的查詢統計是通過將用戶的請求轉化為SQL語句,傳遞給COracleService類,由COracleService類向服務器發送數據請求,將返回的結果傳遞給CPipeData類進行解析所得;管線信息查詢通過osgUtil獲取用戶屏幕點擊點與三維場景的交點,獲取場景中的單根管線或單個管點的信息;管線標注是通過osgText及osgWidget將場景中所有的管線或管點信息轉換為文字進行顯示。如圖6—圖7所示。

圖6 任意區域內管點類型查詢

圖7 管線信息查詢
基本分析模塊可以計算并展示用戶所需的三維場景空間信息,主要包括:水平距離、垂直距離、空間距離及投影面積的量算。該模塊基于osgUtil:LineSegmentIntersector類進行設計,通過用戶交互事件,選擇場景中的兩個(距離量算)或多個(面積量算)點,將其轉換為osgVec3d對象,在確定線或面的位置后根據距離、面積公式進行計算,并將計算結果通過osgText及osgWidget類進行展示實現。如圖8—圖9所示。
平臺作為地下管網的應用軟件,具有豐富的專業管網分析功能。凈距分析、埋深分析、斷面分析功能分別基于osgUtil:LineSegmentIntersector類、osgGA:GUIEventHandler、CPipeData類進行設計,將用戶選擇的管線信息存入CPipeData中進行計算所得;碰撞分析通過獲取用戶在區域內選擇的管線類型信息及多邊形信息,將其轉換為SQL語言,由COracleService類向應用服務器發送請求,并通過osgFX:Scribe類將碰撞點、碰撞管線進行高亮顯示;地形開挖通過osgTerrain:TerrainTile類,更換用戶劃定范圍內的地形場景,從而實現模擬開挖。如圖10—圖12所示。

圖8 空間量測

圖9 面積量測

圖10 垂直凈距分析

圖11 斷面分析

圖12 碰撞分析
在地下管網三維可視化需求越來越大的形勢下,平臺充分利用場景性能優越的OSG引擎進行系統研發,不僅能夠實現管網本體與多源地上數據的一體化三維高效展示,而且具備專業的管網分析功能,脫離了長期依賴國外商業軟件的弊端,具有顯著的經濟效益和實用推廣價值。下一步將結合管網的業務需求,深入研究管網在城市規劃與災害應急管理領域的功能研發。