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