李寅超,曹天馳,韓妍嬌
(哈爾濱市勘察測繪研究院,黑龍江 哈爾濱 150010)
隨著傾斜攝影測量技術的不斷完善,實景三維模型越來越多地應用于我國的城市精細化管理[1]、智慧社區[2]、智慧園區[3]等應用場景中。世界各地基于實景三維模型構建的智慧城市[4]、城市信息模型平臺[5]正在不斷出現,越來越多的城市管理數據匯聚在以三維模型為基底的系統平臺之上。
原始的實景三維模型僅僅是具有三維坐標的“一張皮”,為了將城市管理的各類數據與實景三維模型關聯,就需要對模型進行單體化以實現地理實體的屬性查詢。當前的實景三維模型單體化方法主要分為兩個方向,一個方向是在實景三維模型數據上進行單體化分割,如基于模型頂點ID標簽的單體化[6]和模型切割重建單體化方法[7]。另一方向是將矢量數據與實景三維模型數據疊加實現動態分割[8]。
在城市精細化管理應用中,常常需要在建筑模型單體化的基礎上,進一步實現建筑物分層分戶單體化。在近幾年新建小區可基于房產分層分戶矢量中的建筑物面和層高信息實現分層三維白模自動生成[9]。然而大量的老小區實現建筑物分層主要通過手工對建筑物分層分戶紙質圖矢量化后實現分層[10],基于傾斜模型全自動生成老小區分層信息又要耗費人力檢核[11],要將城市全部建筑物分層分戶需要消耗大量的人力。因此,本文提出一種方法,基于實景三維模型和基礎地理信息提取建筑物高度、樓層層數和建筑物平面信息,動態實現實景三維模型分層,以提高實景三維模型分層數據制作的效率。
為了實現實景三維模型建筑物分層,本文綜合利用實景三維模型數據、大比例尺基礎地理信息數據,通過提取建筑物層數、頂部高程、底部高程、底面輪廓等信息,然后通過Python腳本自動生成建筑物各樓層矢量面數據,通過矢量面與實景三維模型疊加實現建筑物分層,具體流程如圖1所示。

圖1 建筑物分層提取流程圖
自動化建筑物分層數據生成,需要獲取建筑物的各層房高數據。此處以居民住宅小區建筑物為例,一般住宅小區建筑物包含商服功能區與住宅功能區。兩個功能區往往層高不同、平面結構不同,因此需要分別量測。
具體量測包含的內容可表示為:
BS={(NBF,HtBF,HbBF),(NLF,HtLF,HbLF)}
(1)
式(1)中BS為待提取建筑物的量測內容,BF為待提取建筑物的商服功能區,LF為待提取建筑物的住宅功能區,BF、LF均可為空,但不能同時為空。NBF、NLF分別為商服功能區、住宅功能區總樓層數,建筑物總樓層數N=NBF+NLF。HtBF、HtLF分別為兩區的頂部高程,HbBF、HbLF分別為兩區的底部高程,一般情況下HtBF=HbLF。
自動化建筑物分層數據生成,依據建筑物底面輪廓作為基準,生成建筑物各樓層的矢量面數據。建筑物底面數據可通過城市大比例尺基礎地理信息數據獲取建筑物面數據,然后將其中的飄樓、簡易房屋等面合并成為建筑物底面輪廓面。將合成的建筑物底面輪廓面與實景三維模型制作時生成的真正射影像進行疊加對比,如發現有變化及時更新修正。確保建筑物底面輪廓面與實景三維模型的輪廓面保持一致。
商服功能區、住宅功能區各樓層通過建筑物底面輪廓確定平面范圍,通過頂部、底部高程確定各層的高度,從而確定每個樓層的三維空間范圍,則一棟建筑物任意樓層可表示為:
(2)
其中,B(i)為建筑物第i樓層,PG為第i樓層底面輪廓,Ht(i)為第i樓層頂部高程,HbBF(i)為第i樓層底部高程。設商服功能區第i樓層的層高為HBF(i),則:
(3)
由此可得商服功能區第i樓層的頂部高程和底部高程為:
HtBF(i)=HBF·i+HbBF
(4)
HbBF(i)=HBF·(i-1)+HbBF
(5)
基于上述推導,商服功能區各樓層數據均可通過2.1、2.2節數據提取結果表示。住宅功能區各樓層數據推導原理與商服功能區相同,此處不再贅述。基于以上數據提取結果,可實現房屋各樓層面自動生成。
本文通過超圖iDesktop與ArcMap相結合完成方法的實現,其中超圖iDesktop在實景三維數據操作及處理方面較為出色,ArcMap在二維數據Python腳本自動化處理方面較為出色。
哈爾濱市于2019年完成城區實景三維模型建設,并于2020年對數據更新擴充,目前建模面積為 800 km2。本文以哈爾濱市某小區建筑物為例,分別提取了該小區一棟建筑物的實景三維模型OSGB數據、實景三維模型對應的真正射影像IMG數據,以及小區內大比例尺地形圖中建筑物SHP矢量數據。
首先,通過超圖iDesktop的“查詢坐標值”工具提取了建筑物住宅功能區、商服功能區的頂部高程、底部高程數據,數據采集位置示意如圖2所示:

圖2 數據采集位置示意
然后,通過ArcMap將數據采集結果錄入建筑物面矢量數據。數據屬性字段及錄入結果如圖3所示:

圖3 數據采集結果
根據2.3節推導出的建筑物每層的層高計算公式,利用ArcMap的Toolbox工具新建Toolset,然后將自動計算分層數據的Python腳本綁定至Toolset,Python腳本核心代碼邏輯示意如圖4所示:

圖4 核心代碼邏輯示意
Toolset參數設置界面如圖5所示。通過“自動分層”Toolset可在“輸入層”處選取數據采集要素層,在“頂部高程”“底部高程”處選取對應的字段名稱,在“結果層”處選取分層結果輸出圖層。

圖5 Toolset參數設置界面
執行Toolset,分層數據自動生成后保存至結果圖層,將結果圖層以建筑物面為底,以建筑物底部高程作為基礎高程,根據頂部高程和底部高程之差作為拉伸高度進行拉伸后結果如圖6所示。

圖6 建筑物分層提取結果
利用本文的半自動分層方法實現的動態分層數據已經在哈爾濱市基礎地理信息共享與服務系統中試用,并在平房區智慧城市建設、哈爾濱市智慧社區建設進行了試點建設。項目的在線應用采用SuperMapiClient3DforWebGL開發包搭建,應用中首先通過鼠標點擊實景三維模型的建筑物獲取點擊位置的經緯度以及高程參數,然后根據參數與建筑物分層提取結果中矢量面進行空間匹配,最后將矢量面以頂部高程、底部高程之差為高度并以底部高程和經緯度為錨點拉伸成體,最終以貼模型效果展示在應用場景中。選中的樓層以亮黃色標識,試點項目效果如圖7所示:

圖7 試點項目效果
經過試點建設后,通過人機交互的半自動方法實現了樓層分割的精度與工作效率的雙重提升。與建筑物總高度自動分層相比更準確,不會因為樓頂的高程提取錯誤或商服與住宅區樓層高度不一致而導致樓層分割錯位。與手動進行實景三維模型建筑物分層切割或手動建立分層白模相比,時間消耗更少。目前城市管理逐漸精細化過渡,下一步研究工作考慮結合不動產權證書房屋分戶圖數據實現真正的分層分戶數據。分層分戶數據的實現可以大大提高城市管理、社會治理的工作精準度以及工作效率,從而實現城市管理服務的飛躍。