崔鄧 閆中亞
摘? ? 要:由于傳統的二維WebGIS不能完全反映三維世界,隨著計算機軟硬件的發展,應用需求的強烈推動,WebGL技術與GIS技術結合成為三維WebGIS發展的重要方向。基于CesiumJS的開源JavaScript庫,系統開發實現地圖、地形、模型的加載,以及地圖標注、三維量測、查詢和空間分析等功能。
關鍵詞:計算機;研究;開發
引言
CesiumJS源于2011年Analytical Graphics Incorporation (AGI)公司由一組圖形開發人員創立,使用于Web瀏覽器支持創建2D地圖和3D地球的Javascript庫,實現真正的二三維一體化。其不需要安裝任何插件就能夠在支持HTML5的標準瀏覽器上運行,使用WebGL作為圖形渲染引擎,因為它在動態數據可視化方面具有很大的優勢。
一、系統的總體設計
(一)總體架構設計
采用JAVA作為開發語言,在MyEclipse集成開發環境下使用jQuery和vue.js等前端技術進行開發,以Postgresql空間數據庫進行數據的管理和分析,采用三層的開發架構。
(二)技術路線
表現層即為瀏覽器表示層,主要負責瀏覽器端對二三維信息的展現,以及用戶的交互,向服務端發送請求,增刪改查空間數據,在地圖上進行二三維圖形模型和屬性數據的展現等功能。應用服務層主要是基于用戶操作獲取數據進行空間分析,將結果返回到瀏覽器端。數據層使用PostgreSQL數據庫,結合PostGIS可以對空間數據進行管理轉換,并在服務器容器中存儲模型和地形數據提供給表現層和服務層調用。
二、系統的關鍵技術研究
與傳統的二維WebGIS的JavaScript庫不同,CesiumJS不僅僅加入了高度,也突出強調時間概念,并以原子鐘的銫(Cesium)元素命名,更加強調時空概念,以動態模擬現實世界。
(一)地圖與地形加載
CesiumJS在地圖數據的加載上支持多種數據源的圖層格式,包括 WMS,TMS,WMTS,Bings 地圖,Mapbox,谷歌地圖,OpenStreetMap, ArcGIS 地圖服務,標準圖片格式文件和自定義的瓦片拼接方案,訪問地理空間數據符合行業標準。圖層之間可以互相疊加,并且圖層的亮度,對比度,色調和飽和度可以動態改變。
在地形數據上,CesiumJS使用的是STK World Terrain高分辨率, 基于quantized mesh的在線全球地形可視化。應用CesiumTerrainProvider方法進行全球地形數據加載。對于需要離線部署的情況,可以基于DEM數據,使用gdal2srtmtiles_x64工具生成不同級別的地形瓦片數據,發布到服務器。
(二)glTF與3DTiles
glTF(GL Transmission? Format),即圖形語言交換格式,是目前 3D 模型的一種格式標準,其優勢之一是在 Web 傳輸和解析方面更為高效。glTF還可以方便的通過 CZML 創建數據驅動的動態場景。
傾斜三維模型文件的格式為CesiumJS 支持的 3DTiles格式,3DTiles格式以分塊、分級渲染,將大數據量的傾斜三維數據以分塊的、分層的形式組織起來,可以大量減輕服務器以及 GPU 的負擔,是一種格式公開、設計優秀的 WebGIS 平臺三維數據展示格式。3DTiles采用的是一種類似CMOS地形和圖像流的技術,通過樹形空間數據結構對輸入數據集進行三維切塊,可以理解為具備LOD能力的 glTF,每個分塊可以看作一個完全包圍其數據集的三維邊界。同時,為了使各種數據集的包圍體緊密排列,包圍邊界可以根據實際需要采用不同形狀,如定向包圍盒、包圍球或基于最大最小經緯度和高程定義的地理區域。上述優勢使得 3D Tiles成為目前流媒體的大規模異構三維地理空間數據集的開放規范,更適用于密集三維場景的可視化展示,如城市建筑物輪廓,高精度的BIM模型、點云和攝影測量等數據模型。
(三)繪制與標注量測功能
在圖形繪制方面,CesiumJS中GeometryInstance提供加載Geometry和attributes,進行各種二三維圖形在地球上的加載。能夠繪制多種集合形狀并且設置其樣式,如折線、點、多邊形、圓形、盒、球、橢球、圓柱等形狀。在自定義圖形方面,支持工業級矢量數據格式,包括 KML,GeoJSON 和 TopoJSON。
CesiumJS提供用戶交互和繪制方法,在瀏覽器界面上繪制并計算兩點之間的平面距離、高度、斜距的測量。
(四)淹沒分析、地形剖面分析
淹沒分析是繪制面模擬水面升降,依據時間的變化,動態調整高度,實現三維模型的洪澇災害的演示分析。
地形剖面分析是通過繪制線段,通過分割一定距離截取相應的點坐標,獲取對應的高程值,然后再通過Highcharts 庫繪制等高線圖形,直觀展示地形剖面。
三、系統開發實例
開發實例中實現了地圖多源數據切換,三維地形、3DTiles模型數據加載瀏覽等基礎功能。通過分析,實現了放大、縮小、坐標展示、指北針、量測等地圖操作功能。通過對CesiumJS庫的分析,可以在空間分析方面實現可視域分析、剖面分析、飛行路線模擬、淹沒分析等功能。
四、總結
隨著計算機軟硬件的提升和模型數據處理和壓縮處理,瀏覽器標準逐步升級統一,其關注度逐漸提高,開源社區相關項目越來越多。在航空航天、水利水域和智慧城市等領域將廣泛應用。本文對CesiumJS開發進行了分析與研究,解決了開發中的問題,并實現了部分三維GIS功能。同時,CesiumJS存在著數據獲取、建模作業、大數據加載、標準體系等方面的問題。
參考文獻:
[1]馬洪成,張玉駒,劉為民.基于開源Cesium框架的智慧街道三維可視化平臺的研究與應用[J].測繪與空間地理信息,2019,42(8):121-123.
[2]宗維康.WebGIS二三維一體化展示關鍵技術的研究與實現[D].西安:西安電子科技大學,2017.