999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Cesium的地下三維管網3D Tiles模型構建與可視化

2021-08-11 04:23:08竇世卿梁富翔鄭賀剛張寒博
科學技術與工程 2021年18期
關鍵詞:瓦片可視化模型

竇世卿, 梁富翔, 徐 勇, 鄭賀剛, 張 楠, 張寒博

(1.桂林理工大學測繪地理信息學院,桂林 541004; 2.黑龍江科技大學礦業工程學院,哈爾濱 150022)

開源的地理信息系統(geographic information system,GIS)平臺軟件相較商業的GIS平臺軟件更加靈活、經濟,在地理信息系統領域發揮著越來越重要的作用[1]。Cesium是一個開源JavaScript代碼庫,能夠無需插件高效開發三維地圖場景,并具備異步請求服務器海量地理空間數據的能力,在各領域都有著廣泛的應用前景。當下中國正處在城鎮化快速發展時期,地下基礎設施建設滯后,地下管網結構管理模式急需向三維化過渡[2-3]。目前數字孿生城市發展背景下的城市互聯網管理平臺要求實現“空天地海”一體化式的實時虛實共生,對城市地下管網管理同樣提出了更高的技術要求。因此,使用Cesium對三維地下管網進行相應研究,有助于完善B/S架構的城市地下空間三維可視化管理系統,支持數字孿生城市建設,為城市監管者提供更多的輔助決策。

目前,中外學者針對Cesium展開了一系列研究,但多集中在地上和地表領域。Potnis等[4]實現了Cesium虛擬地球對地理空間本體的可視化功能。Gede等[5]開發量子地理信息系統(quantum GIS,QGIS)插件,以Cesium語言格式生成各種專題地圖。張珣等[6]利用Cesium開發了突發生物危害事件可視化智能決策平臺,進行突發生物危害事件模擬預測研究;曹祎楠等[7]基于Cesium進行了公路等基礎設施的三維展示和交互;畢碩本等[8]將熱帶氣旋路徑以及屬性信息整合于Cesium數字地球平臺,進行了地球表面的自然災害可視化相關研究;馬洪成等[9]使用Cesium構建了智慧街道三維可視化平臺;張彧[10]根據全球導航衛星系統(global navigation satellite system,GNSS)衛星和太空垃圾等軌道數據,構建了基于Cesium平臺的導航運行軌道模擬可視化系統;部分學者也使用Cesium開發了一系列的三維GIS可視化平臺[11-15]。由于底層設計的原因,原生Cesium并不支持地下模型的可視化顯示,因此尚未見有學者針對Cesium地下模型數據可視化技術展開研究。為此,基于Cesium提出一種利用shapefile二維管網數據自動構建三維地下管網3D Tiles模型的建模方法,并基于Cesium開發實現三維可視化展示;最后搭建測試系統使用遼寧省蓋州市北海新區管網shapefile實例數據進行測試并驗證相關算法和開發功能的效果和可用性。

1 三維數據格式

1.1 GLTF格式

GL傳輸格式(GL transmission format,GLTF)由Khronos工作組于2015年10月推出,基于現代圖形適配器和Web技術設計,其優秀的跨平臺特性已經使其成為Web 3D對象的標準格式,當前最新版本為2.0版本,因此又稱GLTF 2.0[16]。

1.2 Web 3D Tiles模型

3D Tiles是由Cesium研發團隊建立在GLTF數據結構基礎上加入了分層細節層次模型(level of detail, LOD)結構后得到的三維瓦片模型數據結構,是一種用于流式傳輸大規模異構3D地理空間數據集的開發規范[17],目的是為了渲染大規模空間地理模型。3D Tiles模型既繼承了GLTF優秀的部分,又兼顧了傾斜點云等數據,是WebGL技術中高效、優秀的三維模型數據結構,也是本文構建地下三維管網模型最終的數據結構。

一個獨立的3D Tiles模型文件由一個tileset.json文件和至少一個tile構成,而tile的具體內容為bd3 m(batched 3D modal,批量3D模型)、i3dm(instanced 3D modal,實例3D模型)、pnts、vctr(Point cloud,點云)、cmpt(composite,復合數據)中的一種,其中批量三維模型(b3dm)和實例化三維模型(i3dm)基于GLTF構建。地下管網模型中的管體數據由于較為復雜,因此最終轉為b3dm數據,重復率較高的管景模型則以i3dm的形式存在[17]。

1.3 GLTF與3D Tiles模型關系

在3D Tiles模型中真正調用的是其專屬的模型文件,主要是對GLTF模型二次封裝后的b3dm(batched 3D model)模型和i3dm(instanced 3D model)模型。其中管網模型由于占地范圍較大,且每一個管網結構較為復雜,因此對管網數據進行b3dm格式封裝。對于通常為路燈、消防栓等有著高重復度的模型,使用i3dm進行封裝能夠更加有效率[18]。

2 基于Cesium的地下三維管網3D Tiles模型生成

基于Cesium實現三維地下管網的3D Tiles模型生成,主要是基于原始的二維shapefile數據來創建,二維shapefile數據主要包含點要素和線要素,分別存儲了管網節點與管體的空間地理位置與屬性信息。具體生成過程是首先將二維數據分級處理成四叉樹結構關系,之后通過遍歷二維數據,將點、線要素分開處理進行逐瓦片的變換矩陣計算和模型構建,將每個幾何要素“替換”為標準模型后,將點要素封裝為i3dm模型,線要素封裝為b3dm模型,同時分別更新tileset.json文件;最后將載有模型信息的tileset.json文件和具有樹形結構的tiles文件夾導出分別得到地下管網和管景的3D Tiles模型數據。具體流程如圖1所示。

圖1 3D Tiles模型生成流程圖

2.1 四叉樹結構構建

為了避免地下管網模型渲染時系統壓力過大而掉幀,3D Tiles將模型拆分成不同層級下的不同瓦片,并通過樹狀結構維護瓦片之間的關系。通過虛擬攝像機的位置計算幾何誤差來調用需要的瓦片,進而減輕渲染壓力,最大化的渲染空間地理模型。

結合城市地下管網模型,面積覆蓋較大、高程差異較小的特點,使得地下管網模型在宏觀上更加“扁平”狀,因此使用四叉樹結構模型進行構建。通過創建一系列節點文件夾,從模型整體文件開始,每個節點文件夾在存儲當前節點模型數據的同時,還要存儲當前節點下4個子節點的文件夾。當前節點存儲的模型用于生成相對于子節點較低精細程度的模型,用于較遠距離的加載;而當前節點存儲的子節點模型則用于生成相對于子節點較高精細度模型,用于近距離模型加載。整個文件夾架構與3D Tiles模型的瓦片結構高度統一,這樣能夠有效減小流程的復雜程度。

四叉樹構建完成后,就需要進行迭代遍歷獲取單塊shapefile數據的頂點坐標和屬性等信息。

2.2 單塊二維數據的獲取與處理

在迭代遍歷每一塊shapefile二維數據過程中,需要讀取當前shapefile數據內部存儲的管網地理信息,并計算當前級別下管網數據的空間外包圍盒。由于地下管網圍繞地表呈扁平狀分布的特性,使用region型外包圍盒進行計算。該類外包圍盒的確定參數為東南西北4個方向的經緯度范圍和最大最小高程。因此在獲取到當前瓦塊的屬性數據后,分別計算出最大最小的經度、維度以及高程等6個值作為該包圍盒的描述參數,并以相應的平均值作為該包圍盒中心點。

在獲得單塊shapefile二維數據的空間外包圍盒信息后,還需要將管網頂點坐標由經緯度坐標換算至三維笛卡爾坐標系下的坐標,以提高后續模型的處理效率。

2.3 變換矩陣的計算與處理

2.3.1 模型抖動

在GIS系統中,受浮點精度的影響,為保證地球表面(地表)點位坐標的精度,通常使用雙精度浮點數進行存儲。但在WebGL系統中,模型頂點坐標必須使用單精度浮點類型數據進行存儲。如果GIS系統中的雙精度坐標不經過任何處理直接用于WebGL渲染系統將會造成精度損失,導致模型頂點的偏移,這種變形在每一幀的變換都不一樣,模型在運動過程中將給用戶呈現一種似乎在“抖動”的感覺,如圖2所示。

圖2 因模型抖動造成的幾何變形

模型抖動的根本原因是由于平移參數過大導致的。3D Tiles在計算變換矩陣前,先以外包圍盒中心點為原點,平行于地球空間笛卡爾坐標系構建局部坐標系。該轉換關系可以抽象為平移元素為雙精度浮點數的絕對平移矩陣,該矩陣以數組的形式存儲在tileset.json文件中的對應處瓦片節點的transform屬性中,經過絕對平移變換后,模型本身相當于置身于坐標系原點附近,將不存在較大數量級的數據,因此能夠使用單精度浮點數精確的描述,保證各個頂點間的相對位置關系,從而解決模型抖動。

2.3.2 變換矩陣的計算

絕對平移矩陣計算的X、Y、Z平移變換參數分別對應當前瓦塊的外包圍盒中心點的x、y、z坐標。值得注意的是,實際在WebGL系統中使用的變換矩陣是列主序排列的,這與數學描述中的行主序排列不同。

對于管體數據,遍歷二維數據中線要素圖層中的每一條線段,獲取其端點的坐標以及半徑信息計算變換矩陣。對于每一條線段,所需已知量有:線段起點(x0,y0,z0),線段終點(x1,y1,z1),管道半徑r,以及標準模型軸線端起點和終點坐標,分別為(0,0,0)與(1,0,0)。

首先對輔助信息進行計算,包括標準模型軸線段對應向量和目標線段向量坐標v1、v2,模長l(該值直接為縮放矩陣x軸縮放參數)和兩向量的內外積,如式(1)~式(3)所示:

(1)

(2)

(3)

其中將外積計算得到的向量進行標準化計算,得到旋轉軸K的向量,如式(4)所示:

K=(x,y,z)

(4)

再計算v1、v2兩向量的夾角θ,如式(5)所示:

(5)

輔助信息計算完畢后,便能夠構建該要素的縮放矩陣S、旋轉矩陣R和平移矩陣T,如式(6)、式(7)所示。最后將其按照指定的順序相乘在一起,得到最終的模型矩陣M=S×R×T,如式(8)所示。

對于路燈等附屬物,默認該模型垂直于地表(即沿高程方向),因此只需提供坐標以及水平角即可確定其狀態。

(6)

(7)

(8)

2.4 標準模型

將三維管網模型抽象為由單一標準模型構成的集合體可以進一步壓縮模型復雜程度,提高處理效率。因此使用對標準單位模型進行復制變換的操作得到最終的三維管網模型,獲取二維shapefile數據的空間地理信息構建對應單位要素的變換信息變換標準模型,進而得到完整的三維模型數據。

標準模型的數據格式為GLTF模型,其類別主要分為管體模型與管景模型。對于不同管道的不同類別,處理方式略有不同:如路燈、消防栓等地物有著高相似度,因此可以使用相同的模型進行高速渲染,而管網則可以根據管型抽象為對應形狀的棱柱側面。

3 Cesium地下模型可視化技術實現

從原始的二維數據生成3D Tiles模型,在模型數據加載到數據庫之后,三維管網模型已經能夠按照真實的空間地理位置渲染在網頁中。但由于地下管網模型存在于地面之下,相機則位于地面以上的Cesium系統,并不能直觀地觀察到地面下的模型,因此需要開發對應的輔助功能。

基于Cesium二次開發出地下模式實現了三維地下管網模型的可視化展示。首先對Cesium 1.60進行功能開發以實現地表透明化、裙擺的去除、攝像機地下視角構成和坐標系互轉等功能,再將相關開發功能統一集成在拓展文件中;之后引用Cesium 1.60構建測試頁面,用Nginx構建服務器環境,調用MongoDB數據庫中存儲的地下管網3D Tiles模型數據,使用瀏覽器打開測試頁面,構成整個測試系統,并驗證開發功能的正確性[19-20]。技術流程如圖3所示。

圖3 Cesium地下模型可視化技術實現流程圖

3.1 地表透明度的修改

由于管網模型處于地下,通過將虛擬地球地表透明化處理,能夠直觀的觀測到模型的真實地理位置。在Cesium中,該邏輯被封裝于GlobeSurfaceTileProvider類中。但在該類中,地表瓦片材質的透明度固定為1(即不透明),故將其進行開發設置,使其能夠接收外部傳入的透明度。

3.2 地圖瓦塊裙擺的關閉

在開啟地圖透明度以后能夠看到位于地表以下的模型位置。由于地圖瓦塊使用四叉樹進行索引,在加載時瓦塊間會出現縫隙,傳統的解決這一問題的方法是在每個地圖瓦塊的邊界處,向下凹出一段距離以保證地表的連續性,這稱為裙擺(skirt)。但在地表被透明化處理后,由于裙擺相互疊加的原因,會出現許多白色的“網格”,影響用戶觀看體驗,所以需要去除裙擺。加載Cesium內置的createWorldTerrain地形數據,其內置的裙擺屬性被封裝在CesiumTerrainProvider類中,通過對該類進行修改,使其能夠接收外部傳入的高度值,再將裙擺高度值設置為0來達到消除裙擺的目的。

3.3 相機地下視角

當攝像機視角進入地下后,Cesium會默認將攝像機彈出地表,從而降低用戶體驗效果。攝像機與地表關系的判定邏輯封裝在Camera類的_adjustHeightForTerrain方法中。修改該方法,使其檢測到攝像機高度低于地表時不對攝像機位置進行修改,即可令攝像機移動到地下。

4 系統平臺測試

該測試平臺主要由數據層、服務層與用戶層構成。其中數據層中使用MongoDB數據庫存儲了地圖瓦片、地形瓦片和3D Tiles模型數據,是整個系統的基礎。由于Cesium的啟動和數據庫中數據的調用均需要在服務器環境下運行,本系統使用Nginx構建服務器來滿足系統啟動的條件。在用戶層中,使用超文本標記語言(hyper text markup language,HTML)和Cesium完成三維場景的搭建,并使用開發的拓展文件滿足地下模型的可視化要求[21-24]。

測試數據為遼寧省蓋州市北海新區約10×104km2的二維管網shapefile數據來生成3D Tiles模型,主要包含管體模型和管景模型,并存儲了相關屬性信息,生成的模型示意圖如圖4所示,屬性信息如表1和表2所示。

圖4 測試數據生成的地下三維管網3D Tiles模型

表1 管景模型數據屬性結構

表2 管線模型數據屬性結構

4.1 模型加載測試

模型加載測試了地表模型和地下模型,測試加載地下管網模型時還應當獲取模型存儲的屬性數據,即點擊管道后能獲取對應模型的屬性信息。測試結果如圖5所示。實現思路是使用Cesium內置的screenSpaceEventHandler方法,該方法接收兩個參數,第一個參數是具體執行的回調函數;第二個參數是Cesium內置的事件類別,以數字的形式維護。本文中使用其內置的(鼠標點擊)LEFT_CLICK事件。將screenSpaceEventHandler的回調方法的回調參數傳入Cesium內置的viewer.scene.pick方法中即可獲取3D Tiles模型的內部數據,再通過內部數據的getProperty方法就能夠根據模型內部的數據ID信息獲取到對應的屬性值,最后將屬性值以表格的形式渲染在頁面中即可完成地下管網模型的對接工作。

需要補充說明的是由于Cesium系統使用透視投影渲染圖形,導致屏幕中每個像素點對應的實際距離均不相同,故無法使用標準比例尺表示距離,僅能給出大致參考。圖5(a)中大雁塔通高64.517 m,底層邊長25.5 m。圖5(b)中的球體半徑約為0.5 m。

圖5 模型及屬性數據的加載測試

4.2 地下模式的測試

地下模型的相關邏輯封裝在Underground類中,通過實例化該類開啟地下模式。在實例化時主要輸入地表透明度參數,即當開啟地下模式的時候地球表面的透明度值,使用成員方法disable和activate控制地下模式的開關。在地下模式中將對地表進行透明化處理以及消除地圖瓦片裙擺,同時使攝像機能夠移動到地表以下,在無需修改模型空間地理位置的情況下,全方位的觀察位于地下的管網模型,具體細節圖如6所示。圖6(a)為地下模式的關閉狀態,圖6(b)~圖6(d)為地下模式的開啟狀態。其中圖6(b)、圖6(c)為裙擺的關閉和開啟狀態,能夠觀察到,在地表開啟透明度后,裙擺會非常影響視覺體驗。圖6(d)為攝像機地下視角,為更全面顯示模型提供了條件。圖6(a)~圖6(c)中的圖片寬度在透視投影中顯示約為4.8 km,圖6(d)中的球體半徑同樣約為0.5 m。

圖6 地下模式測試結果

5 結論

基于Cesium三維地圖引擎提出了一種利用shapefile二維地下管網數據自動構建三維地下管網3D Tiles模型的方法并完成了模型的可視化展示。經過系統平臺測試,結果表明利用二維shapefile地下管網數據能夠快速生成3D Tiles模型,實現良好的三維地下模型的可視化體驗,本文方法在一定程度上彌補了原生Cesium不支持地下模型可視化的不足,這是城市地下管網在三維可視化技術中一次新的嘗試,為后續Cesium地下空間相關研究工作提供技術支持和方法參考。

本文中管網模型的占地面積范圍約10 km2,但管道的半徑通常為米或分米級別。因此當在較遠距離觀看模型時,如果按照真實比例繪制管道半徑,將會難以觀察到模型。現階段初步解決方案是使用模型分級技術緩解這個現象,在較低層級的瓦片模型中按一定比例擴大管道半徑,使得較遠處仍然能夠查看到模型。除了本文中所提的開發功能外,模擬開挖功能可以更加直觀地反映地上建筑物與地下管網的位置關系,對城市規劃有著重要意義,但本文中開發的可視化輔助功能還不支持該功能,因此計劃將其加入到后續的研究工作中進行更深一步的探究。

猜你喜歡
瓦片可視化模型
河水
遼河(2025年7期)2025-07-25 00:00:00
一半模型
基于CiteSpace的足三里穴研究可視化分析
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
重要模型『一線三等角』
基于CGAL和OpenGL的海底地形三維可視化
重尾非線性自回歸模型自加權M-估計的漸近分布
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
慣性
揚子江(2019年1期)2019-03-08 02:52:34
3D打印中的模型分割與打包
主站蜘蛛池模板: 国产无码高清视频不卡| 91九色国产porny| 亚洲精品人成网线在线| 亚洲日韩高清在线亚洲专区| 亚洲视频三级| 欧美不卡在线视频| 手机在线免费毛片| 日韩国产综合精选| 尤物成AV人片在线观看| 99久久人妻精品免费二区| 日韩av在线直播| 免费观看无遮挡www的小视频| 91黄视频在线观看| 熟妇丰满人妻| 国产午夜看片| 国产精品综合色区在线观看| 欧美国产精品拍自| 亚洲国产日韩视频观看| AV无码国产在线看岛国岛| 青青草一区| 欧美中文字幕在线播放| 欧美成人综合在线| 午夜国产理论| 九九久久精品免费观看| 亚洲第一黄片大全| 韩日免费小视频| 黄色a一级视频| 成人欧美日韩| 91综合色区亚洲熟妇p| 国产精品久久久久久久久kt| 9999在线视频| 亚洲国产成人久久精品软件| 欧美日韩激情| 亚洲日本一本dvd高清| 国产视频资源在线观看| 亚洲大尺度在线| 久久久久国产精品熟女影院| 麻豆a级片| 国产主播一区二区三区| 亚洲精品天堂自在久久77| 久99久热只有精品国产15| 亚洲91精品视频| 亚洲精品国产综合99| 亚洲一区免费看| 一区二区日韩国产精久久| 欧美一区日韩一区中文字幕页| 热九九精品| 国产一区成人| 日本AⅤ精品一区二区三区日| 欧洲欧美人成免费全部视频| 婷婷六月综合网| 国产喷水视频| 亚洲V日韩V无码一区二区| 第一区免费在线观看| 青青草国产精品久久久久| 日本人妻一区二区三区不卡影院| 日韩精品毛片人妻AV不卡| 无码日韩精品91超碰| 亚洲免费黄色网| 亚洲精品无码日韩国产不卡| 国产精品偷伦视频免费观看国产 | 超碰91免费人妻| 特级做a爰片毛片免费69| 亚洲男人在线| 综合天天色| 久久人妻xunleige无码| 亚洲人成在线精品| 久久国产精品无码hdav| 精品一区二区三区中文字幕| 欧美成人手机在线观看网址| 亚洲欧美日韩中文字幕在线一区| 九色在线观看视频| 日韩高清欧美| 成人午夜天| 综合久久五月天| a色毛片免费视频| 99热最新网址| 欧美日韩在线成人| 欧美性色综合网| 亚洲人成网站18禁动漫无码| 婷婷丁香色| 国产微拍一区|