宋仁波, 朱瑜馨, 郭仁杰, 趙鵬飛, 趙珂馨, 朱潔, 陳穎
(1.無錫學(xué)院大氣與遙感學(xué)院,無錫 214105; 2.淮陰師范學(xué)院城市與環(huán)境學(xué)院,淮安 223300)
建筑物三維建模是運用計算機圖形圖像處理技術(shù),將建筑物的二維平面圖轉(zhuǎn)換為三維模型并進行立體顯示的一門科學(xué)技術(shù),在城市景觀規(guī)劃、建筑設(shè)計、軍事仿真、旅游開發(fā)、導(dǎo)航開發(fā)以及古建筑物保護等領(lǐng)域具有廣泛的應(yīng)用價值[1-3]。近年來,隨著各地數(shù)字城市、虛擬城市和智慧城市建設(shè)速度的加快,建筑物三維建模已成為測繪、GIS和建筑等領(lǐng)域的研究熱點[4-7]。建筑物三維建模技術(shù)的核心是根據(jù)建筑物的幾何信息構(gòu)造其立體模型,利用相關(guān)建模軟件或編程語言生成其三維模型,并賦于模型表面紋理貼圖進行立體圖形顯示。現(xiàn)有的建筑物三維建模方法主要歸納為4類: ①利用機載激光雷達或地面三維掃描儀獲取建筑物的三維點云構(gòu)建其三維模型[6,8-11],需要購買或租賃數(shù)據(jù)采集裝備,建模成本高; ②利用衛(wèi)星遙感、航空遙感、無人機遙感結(jié)合攝影測量技術(shù)獲取對象的多視角影像構(gòu)建其三維模型[5,7,12-16],需要借助專業(yè)攝影測量軟件,操作人員需要經(jīng)過專業(yè)的技術(shù)培訓(xùn)才能掌握; ③利用形狀文法或知識規(guī)則描述建筑物的結(jié)構(gòu)和部件組成[17-18],通過編寫計算機程序自動生成建筑物的三維模型,具有自動化程度較高的優(yōu)點,但需要復(fù)雜的算法設(shè)計和編程經(jīng)驗、技能; ④組合遙感、攝影測量和激光雷達點云的方法[18],該方法建模精度高,但同樣需要復(fù)雜的數(shù)據(jù)預(yù)處理和大量編程實踐。此外,上述建模方法都需要三維建模軟件的支持才能完成模型的構(gòu)建[19-25],綜上所述,上述方法在推廣和應(yīng)用時都受到成本和技術(shù)條件的限制,實用化仍然是建模需要克服的難點和障礙,因此,非常有必要研究和開發(fā)實用、可操作性強的城市建筑物三維方法,并將其推廣應(yīng)用于數(shù)字城市、虛擬城市和智慧城市等領(lǐng)域的研究和工程實踐中。
近些年來,無人機攝影測量技術(shù)飛速發(fā)展[26-28],為近距離地表空間測繪數(shù)據(jù)的獲取、處理和分析提供了更加豐富的技術(shù)手段,也使得提取地物對象的精度得到大幅度提升,使得建筑物精細(xì)化三維建模成為技術(shù)趨勢[29-31]。目前,百度、谷歌、高德、騰訊、天地圖等公司及國家測繪地理部門都提供在線的地圖服務(wù),不僅能夠提供傳統(tǒng)的電子地圖和遙感影像,而且支持城市全景影像圖功能,用戶可以借助地圖下載工具免費獲得多源測繪數(shù)據(jù),為用戶多視角觀察地面目標(biāo),獲取建筑物三維信息提供更加豐富的數(shù)據(jù)源,集成多源測繪數(shù)據(jù)進行建筑物三維建模已成趨勢。同時,計算機軟硬件技術(shù)的不斷進步,促使GIS技術(shù)不斷革新,GIS軟件系統(tǒng)已由基本的數(shù)據(jù)處理、分析和制圖工具向嵌入式GIS系統(tǒng)、分布式GIS系統(tǒng)和三維GIS系統(tǒng)3個方向發(fā)展,尤其是 GIS系統(tǒng)提供的強大建模功能,使用戶能夠在短時間內(nèi)設(shè)計出滿足用戶特定任務(wù)要求的模型,這些都使得大范圍、大批量城市建筑物的三維建模與可視化分析成為現(xiàn)實。 綜上所述,針對數(shù)字城市、虛擬城市、智慧城市領(lǐng)域的研究和工程實踐迫切需要實用、可操作性強和自動化程度高的建模方法,本文提出一種基于多源數(shù)據(jù)集成的建筑物三維建模方法,集成高分辨遙感影像、無人機航空影像、建筑物電子地圖、全景影像為數(shù)據(jù)源,借助GIS建模功能,實現(xiàn)多源建模數(shù)據(jù)的自動預(yù)處理、三維模型的自動構(gòu)建和模型的精細(xì)化處理。同時,借助紋理映射技術(shù)實現(xiàn)模型的可視化和逼真展現(xiàn)。
計算機中表示三維形體的模型,按照幾何特點進行分類,主要可以歸納為3種: 線框模型、表面模型和實體模型。同時,按照表示物體的方法進行分類,實體模型基本上可以分為分解表示、結(jié)構(gòu)實體幾何模型(constructive solid geometry,CSG)和邊界表示模型(boundary representation,B-rep)3大類。本文組合線框、邊界表示和結(jié)構(gòu)實體幾何模型三維建模的思想,并將其運用于建筑物三維建模,其主要建模原理為: 將建筑物的主體結(jié)構(gòu)分解為一系列簡單的側(cè)墻、門窗和屋頂?shù)然窘Y(jié)構(gòu)部件,同時采用線框描述建筑物的邊界線; 進一步,采用B-rep模型描述建筑物各部件的邊界面; 最后,建筑物的主體結(jié)構(gòu)模型表示為一系列簡單的側(cè)墻、門窗和屋頂?shù)然窘Y(jié)構(gòu)部件的布爾操作的結(jié)果,從而構(gòu)建建筑物的三維建模,其原理如圖1所示。
圖1 建筑物三維建模與可視化原理示意圖
從GIS建模的視角,結(jié)合GIS的數(shù)據(jù)處理、空間分析和三維分析功能,通過構(gòu)建模型實現(xiàn)建筑物三維模型的自動構(gòu)建。其中,GIS空間分析(spacial analysis)指的是借助GIS軟件從空間數(shù)據(jù)中獲取有關(guān)地理對象的空間位置、分布、形態(tài)、形成和演變等信息并進行分析,其基本功能包括空間查詢與量算、緩沖區(qū)分析、疊加分析、路徑分析、空間插值和統(tǒng)計分類分析等??臻g分析建模是通過作用于原始數(shù)據(jù)和派生數(shù)據(jù)的一組順序、交互空間分析命令,解釋有關(guān)空間現(xiàn)象或發(fā)現(xiàn)空間規(guī)律的過程??臻g分析建模建立在對空間地圖數(shù)據(jù)操作基礎(chǔ)之上,又稱“地圖建?!?,其結(jié)果是得到一個“地圖模型”,它是對空間分析過程及其結(jié)果的圖形或符號化表示,幫助分析人員和規(guī)劃所要完成的分析過程,并逐步指定完成分析過程所需建模數(shù)據(jù)[29]??梢暬J抢脟@現(xiàn)實想法組織模型的一種思考問題的方法,它以圖形的方式描述所開發(fā)的系統(tǒng)的過程,促進了對需求分析有更好的理解從而進行更清晰的設(shè)計。
本文采用ArcToolbox工具箱結(jié)合Modebuilder可視建模工具,通過構(gòu)建模型、創(chuàng)建和編寫腳本工具實現(xiàn)建模數(shù)據(jù)的自動預(yù)處理和建筑物三維模型的自動構(gòu)建。其中,ArcToolbox工具箱是ArcGIS系統(tǒng)內(nèi)嵌的地理處理工具集合,通過內(nèi)置工具、模型工具、腳本工具和特殊工具不僅可以實現(xiàn)基本的數(shù)據(jù)處理、轉(zhuǎn)換、數(shù)據(jù)統(tǒng)計和數(shù)據(jù)和圖形分析功能,而且借助其三維擴展功能模塊,可實現(xiàn)各種復(fù)雜幾何體三維模型的構(gòu)建。ModelBuilder是一種可視化建模工具,為創(chuàng)建滿足用戶要求特定工作流提供有效的途徑。其主要特點是將一系列地理處理工具串聯(lián)在一起,將其中一個工具的輸出作為另一個工具的輸入,通過構(gòu)造和執(zhí)行工作流,可以自動化完成復(fù)雜的建模任務(wù)從而提高建模效率。此外,通過創(chuàng)建模型并將其共享為工具來提供擴展 ArcGIS Pro功能的高級方法,同時,利用Visual Studio結(jié)合ArcGIS Pro SDK二次開發(fā)還可用于將ArcGIS Pro與其他應(yīng)用程序進行集成,能夠增強構(gòu)建模型的可復(fù)用和擴展性。Python是一種面向?qū)ο?、解釋型、交互式和面向初學(xué)者的計算機程序設(shè)計語言,它具有語法簡潔而清晰,易于編寫和維護的優(yōu)點,并具有豐富和強大的類庫,使其已成為當(dāng)前計算機領(lǐng)域的主流開發(fā)語言[24],能夠顯著提高程序的開發(fā)效率。ArcGIS系統(tǒng)提供了Python語言集成開發(fā)環(huán)境(integrated development and learning environment,IDLE)和ArcPy站點包,通過編程能夠創(chuàng)建滿足用戶特定需求的腳本工具,不僅可以有效彌補ArctoolBox系統(tǒng)工具箱功能的不足,而且能夠增強ModeBuilder的建模能力。
將建筑物三維建模與可視化工作分解為數(shù)據(jù)獲取和預(yù)處理、三維建模和紋理貼圖等關(guān)鍵環(huán)節(jié),并將其進行整合和完善,以設(shè)計工作技術(shù)流程。
依據(jù)實用、高效和可操作的原則和目標(biāo)進行建筑物三維建模的技術(shù)流程設(shè)計,同時,要求建模的可視化效果直觀、形象和逼真,以達到工程應(yīng)用要求,其主要設(shè)計思路是: 首先,將建筑物主體結(jié)構(gòu)部件的建模對象包括側(cè)墻面、門窗、屋頂?shù)冗M行分解,并將其建模過程分解為一系列數(shù)據(jù)處理、文件轉(zhuǎn)換、空間分析和三維分析操作,并借助GIS建模功能實現(xiàn)整個建模過程的自動化。 具體操作過程主要包括: ①以高分辨遙感影像、建筑物電子地圖和全景影像為數(shù)據(jù)源,利用ENVI影像非監(jiān)督分類(UnsupervisedClassificationCleaned)工具,提取出建筑物墻體、窗戶和屋頂?shù)氖噶慷噙呅慰臻g信息,同時,結(jié)合建筑物全景影像和地面拍攝影像測量定標(biāo),通過影像特征分類,分別提取出建筑物的高度、樓層數(shù)和屋頂類型等屬性信息,利用概化處理工具對其進行預(yù)計處理,并將其保存至GIS數(shù)據(jù)庫; ②以建筑物墻體、窗戶多邊形作為模型的輸入; ③以建筑物屋頂多邊形作為模型的輸入,利用要素選擇迭代器(IterateFeatureSelection)結(jié)合(Select)工具提出每一棟建筑物的矢量多邊形,同時,結(jié)合數(shù)據(jù)處理、文件轉(zhuǎn)換、空間分析和三維分析工具分別生成建筑物屋頂?shù)娜S實體模型; ④采用Python面向?qū)ο缶幊陶Z言結(jié)合ArcPy站點包,通過編程實現(xiàn)批量3D差積運算程序,并結(jié)合ArcCatalog在ArcToolbox工具箱構(gòu)建自定義工具自動實現(xiàn)側(cè)墻和屋頂模型的細(xì)化鏤空處理。此外,利用ModelBuilder可視化建模工具,通過調(diào)用ArcToolbox工具箱中的內(nèi)置工具、模型工具和腳本工具實現(xiàn)數(shù)據(jù)的多源數(shù)據(jù)預(yù)處理和三維模型的自動構(gòu)建,通過構(gòu)建模型實現(xiàn)整個操作過程的自動化。最后,利用ArcGIS Pro編輯模型的紋理貼圖,從而實現(xiàn)模型的可視化,其技術(shù)流程如圖2所示。
圖2 城市建筑物三維建模工作流程
2.2.1 數(shù)據(jù)的獲取
以高分辨率衛(wèi)星影像、建筑物輪廓電子地圖和全景影像作為建模數(shù)據(jù)源。其中,由于衛(wèi)星遙感相機拍攝距離遠(yuǎn)、視場角大,其獲取的遙感影像具有宏觀和綜合的優(yōu)點,并可以實現(xiàn)連續(xù)觀測,形成時序信息。目前,常用的高分辨率衛(wèi)星遙感影像主要包括我國的高分系列影像(GF)、美國的快鳥(QuickBird)影像和美國的IKONOS影像。GF-2影像和QuickBird影像可從百度、谷歌、高德、騰訊和天地圖地圖網(wǎng)站免費獲取,谷歌地圖還提供歷史影像,通過衛(wèi)星地圖下載器可免費獲得22級影像(圖3(a)),其空間分辨率為0.61 m。由于衛(wèi)星遙感影像易受天氣條件的影響,一旦成像區(qū)域有云或霧霾覆蓋,會嚴(yán)重影響成像質(zhì)量。同時,考慮直接利用遙感影像提取建筑物邊界輪廓工作量大,提取的多邊形輪廓邊界精度較差,采用建筑物輪廓電子地圖作為數(shù)據(jù)源,以提高數(shù)據(jù)獲取和處理效率。城市建筑物輪廓電子地圖可從百度、高德和天地圖網(wǎng)站免費獲取,上述站點主要提供全國大中型城市主城區(qū)建筑物輪廓的柵格數(shù)據(jù),通過衛(wèi)星地圖下載器下載建筑物電子地圖的22級影像(圖3(b)—(c)),其空間分辨率約為0.5 m。此外,考慮衛(wèi)星影像、建筑物輪廓電子地圖只能提供建筑物頂視的邊界輪廓和紋理結(jié)構(gòu)特征,其提供建筑物側(cè)面影像紋理信息有限,不能準(zhǔn)確刻畫建筑物側(cè)面的幾何結(jié)構(gòu)特征; 同時,由于衛(wèi)星獲取的側(cè)面紋理影像幾何畸變嚴(yán)重,不能作為建筑物側(cè)面紋理貼圖使用,而地面相機人工拍攝工作量太大,不適合城市大區(qū)域作業(yè)。因此,采用百度全景收集影像建筑物側(cè)面影像數(shù)據(jù),通過影像處理作為模型紋理貼圖,以提高模型的可視化效果,如圖3(d)所示。
(a) QuickBird衛(wèi)星影像 (b) 百度建筑物電子地圖 (c) 天地圖建筑物電子地圖 (d) 百度全景影像
2.2.2 數(shù)據(jù)的集成和預(yù)處理
利用ArcGIS軟件導(dǎo)入獲取的高分辨率遙感影像、建筑物電子地圖和全景影像,并進行配準(zhǔn)和幾何糾正預(yù)處理,然后分別將其導(dǎo)入建立的GIS數(shù)據(jù)庫進行集成。一方面,利用矢量工具出結(jié)合遙感影像勾畫出建筑物側(cè)面的邊界(圖4(a)),從中提取出建筑物側(cè)面的紋理影像(圖4(b)),同時結(jié)合幾何糾正工具對其進行形變處理(圖4(c)); 進一步,利用符號化工具結(jié)合直方圖的調(diào)整閾值功能,先提取出建筑物側(cè)面紋理灰度影像(圖4(d)),再將其進行二值化處理(圖4(e)); 最后,利用ENVI非監(jiān)督分類模型(圖4(g))提取出建筑物側(cè)面窗戶的矢量多邊形(圖4(f))。
(a) 側(cè)視影像 (b) 裁剪 (c) 幾何糾正 (d) 灰度化 (e) 二值化處理 (f) 非監(jiān)督分類輸出矢量
(g) 非監(jiān)督分類輸出矢量模型
另一方面,利用ArcToolbox工具箱結(jié)合ENVI非監(jiān)督分類模型,通過創(chuàng)建自定義模型結(jié)合建筑物輪廓電子地圖,提取出建筑物輪廓的矢量多邊形; 然后,利用概化工具對其邊界進行概化預(yù)處理,并結(jié)合遙感影像手動調(diào)整其邊界的細(xì)節(jié)結(jié)點,其處理過程和結(jié)果如圖5所示。
(a) 建筑物輪廓提取(b) 邊界概化處理(c) 邊界結(jié)點調(diào)整
此外,利用手機結(jié)合長焦鏡頭水準(zhǔn)尺拍攝建筑物側(cè)面紋理影像,通過讀取水準(zhǔn)尺讀數(shù),提取出側(cè)面樓層、層高、屋頂高度等值(表1)。最后,通過側(cè)視影像確定建筑物屋頂?shù)慕Y(jié)構(gòu)類型(如平頂和斜頂)。
表1 提取的建筑物空間和屬性信息
建筑物的主體結(jié)構(gòu)部件主要包括側(cè)墻面、門窗和屋頂?shù)冉Y(jié)構(gòu),建筑物的幾何形狀和空間一般排列較規(guī)則,非常適合程序和建模批量生成,這樣做不僅可顯著降低作業(yè)人員的勞動強度,而且可有效提高建模效率。利用ModelBuider可視化建模工具,通過調(diào)用ArcToolbox系統(tǒng)工具箱中內(nèi)定的數(shù)據(jù)處理、文件轉(zhuǎn)換、空間分析、三維分析和腳本工具實現(xiàn)建筑物主體結(jié)構(gòu)三維模型的自動構(gòu)建。此外,鑒于每個模型只能包含一個迭代器,通過Python面向?qū)ο缶幊陶Z言結(jié)合ArcPy站點包,通過編寫腳本程序并結(jié)合ArcToolbox工具箱創(chuàng)建腳本工具,以彌補模型迭代器的不足。
2.3.1 側(cè)墻建模
鑒于建筑物側(cè)墻和門窗的幾何形狀及空間排列較規(guī)則,且分層構(gòu)建,為實現(xiàn)模型的批量構(gòu)建,提出基于建筑物分類、分層表面建模和實體拉伸建模的建筑物主體結(jié)構(gòu)部件建模方案,設(shè)計了建筑物側(cè)墻和門窗等主體結(jié)構(gòu)實體模型的分層自動生成腳本程序,同時采用Phython面向?qū)ο笳Z言結(jié)合ArcPy站點包,通過調(diào)用ArcToolbox工具箱中的TIN表面建模和TIN拉伸的三維分析工具進行了編寫實現(xiàn),其算法及程序?qū)崿F(xiàn)主要包括以下3個步驟: ①根據(jù)輸入建筑物部件的多邊形點、多邊形文件、輸出工作區(qū)文件夾,先利用ArcPy查詢游標(biāo)(SearchCursor)的查詢功能,通過讀取多邊形點文件,并結(jié)合全局變量保存建筑物的名稱、樓層數(shù)、層高和屋頂高度等屬性字段信息,同時,利用os庫的makedirs函數(shù)創(chuàng)建建筑物結(jié)構(gòu)部件名稱文件夾,該文件夾用于存放生成每棟建筑物的每層側(cè)墻的多面體要素shpfile文件; ②利用循環(huán)程序通過調(diào)用CopyFeatures_management()函數(shù)和Adjust3DZ_management()函數(shù)分別復(fù)制并調(diào)整建筑物上下多邊形點至對應(yīng)的樓層高度,同時,利用CreateTin_3d()函數(shù)分別創(chuàng)建建筑物每一層的TIN表面,然后,利用ExtrudeBetween()函數(shù)生成其每一層的側(cè)墻和門窗的實體模型; ③在輸入建筑物底面邊界多邊形后,通過緩沖區(qū)(Buffer)、擦除(Erease)生成外墻多邊形,然后利用要素選擇迭代器(IterateFeatureSelection)結(jié)合拷貝要素(CopyFeatures)、要素結(jié)點轉(zhuǎn)點(FeatureVerticesToPoints)連接側(cè)墻腳本程序,通過構(gòu)建模型自動生成每棟建筑物的每層側(cè)墻三維模型,其模型構(gòu)建方法如圖6所示,生成結(jié)果如圖7所示。此外,通過模型運行報告分析側(cè)墻模型的計算性能,通過輸入建筑物多邊形參量(130個)對迭代器和各個工具的執(zhí)行時間進行分類統(tǒng)計和匯總計算,其結(jié)果如表2所示。
圖6 建筑物側(cè)墻的自動創(chuàng)建過程
(a) 建筑物側(cè)墻多邊形(b) 調(diào)整多邊形結(jié)點的高度(c) 生成側(cè)墻TIN表面(d) 生成一棟建筑物的側(cè)墻
(e) 生成全部建筑物的側(cè)墻
表2 側(cè)墻建模實驗統(tǒng)計
2.3.2 門窗建模
采用腳本程序結(jié)合建模生成建筑物門窗部件的三維模型,與側(cè)墻腳本程序的算法設(shè)計和實現(xiàn)類似,只是更改輸入?yún)?shù)名稱、中間變量名稱和輸出參數(shù)名稱,通過循環(huán)結(jié)合CopyFeatures_management()函數(shù)和Adjust3DZ_management()函數(shù)分別復(fù)制并調(diào)整建筑物門窗戶上下多邊形點至對應(yīng)的樓層高度和基準(zhǔn)高度; 然后,利用CreateTin_3d()函數(shù)分別創(chuàng)建建筑物每一層門窗的TIN表面,進一步,利用ExtrudeBetween()函數(shù)生成其每一層門窗的實體模型,其主要代碼實現(xiàn)和側(cè)墻實現(xiàn)類似,這里不作贅述; 最后,在輸入建筑物底面邊界多邊形后,通過緩沖區(qū)(Buffer)、擦除(Erease)生成外墻多邊形,利用要素選擇迭代器(IterateFeatureSelection)結(jié)合拷貝要素(CopyFeatures)、要素結(jié)點轉(zhuǎn)點(FeatureVerticesToPoints)連接側(cè)墻腳本程序,通過構(gòu)建模型自動生成每棟建筑每層窗戶的三維模型,其模型構(gòu)建方法見圖8,生成結(jié)果如圖9所示。模型工具執(zhí)行時間統(tǒng)計如表3所示。
圖8 建筑物門窗自動創(chuàng)建過程
(a) 建筑物窗戶多邊形(b) 調(diào)整多邊形結(jié)點高度(c) 生成每層窗戶的TIN表面(d) 批量生成窗戶
表3 窗戶建模實驗統(tǒng)計
需要說明的是,與模型中腳本程序執(zhí)行時間相關(guān)的參數(shù)主要包括: 創(chuàng)建窗戶文件夾、窗戶文件名文件夾和樓層數(shù),按照每層1 s的平均值計算統(tǒng)計結(jié)果,通過提取和計算實驗區(qū)內(nèi)全部建筑物樓層數(shù)的平均值(4.64層)、建筑物數(shù)量和表3的總計值相乘,得出生成實驗區(qū)內(nèi)全部建筑物的窗戶三維模型需要總的運行時間是167.573 6 min。
2.3.3 屋頂建模
每棟建筑物的屋頂結(jié)構(gòu)主要包括平頂和斜頂2種結(jié)構(gòu)類型,其形態(tài)各異,但每棟建筑物通常只包括一層屋頂,即屋頂不是分層結(jié)構(gòu),因此,可通過創(chuàng)建模型生成每個建筑物的平頂或斜頂?shù)娜S模型,其模型的主要構(gòu)建步驟包括: 以建筑物多邊形作為模型輸入,通過要素迭代器(IterateFeatureSelection)結(jié)合拷貝要素(CopyFeatures)、要素結(jié)點轉(zhuǎn)點(FeatureVerticesToPoints)、添加字段(AddField)、計算字段(CalculateField)、創(chuàng)建TIN(CreateTin)和TIN拉伸工具(ExtrudeBetween)分別生成每棟建筑物屋頂?shù)亩嗝骟w要素(MultiPatch)模型,其模型組成和模型生成結(jié)果如圖10所示。
(a) 建筑物屋頂自動構(gòu)建模型
(b) 生成的每棟建筑物屋頂模型
其中,斜屋頂主要利用計算字段工具根據(jù)屋頂高度和屋頂傾斜角度字段,然后作為緩沖區(qū)工具的輸入?yún)?shù),調(diào)整屋頂上邊界點和線的高度,公式為:
A=-tan(3.14[B]/180)×[C]-0.01 ,
(1)
式中:A為緩沖區(qū)輸入?yún)?shù);B為傾斜角度;C為屋頂高度; [·]表示取字段變量符號。
此外,通過模型運行報告分析屋頂模型的性能,通過輸入窗戶多邊形參數(shù)(130個和130組),對迭代器和各個工具的執(zhí)行時間進行分類統(tǒng)計和匯總計算,其結(jié)果如表4所示。
表4 屋頂建模實驗統(tǒng)計
2.3.4 模型細(xì)化處理
為增強模型的立體感和可視效果的同時,使模型能夠反映出光照陰影和外部光照射入室內(nèi)的效果進行可視化分析。通過調(diào)用三維分析工具箱的三維差積運算工具,對之前生成側(cè)墻、窗戶的MultiPatch模型和屋頂兩兩做三維差積布爾運算,分別生成側(cè)墻和屋頂?shù)溺U空模型,同時,為提高鏤空處理效率,通過腳本編程對三維差積運算工具進行擴展,其腳本程序界面如圖11(a)所示,其腳本程序?qū)崿F(xiàn)主要包括2個步驟: ①分別輸入減多面體要素、減多面體要素類 Shpfile文件列表和輸出工作區(qū),并利用列表容器結(jié)合循環(huán)程序?qū)⑵浞謩e存放于list1和list2中; ②通過循環(huán)程序讀取list1和list2中的減多面體要素、減多面體要素類Shpfile文件名稱,并依據(jù)循環(huán)變量i生成差積輸出文件Shpfile文件名,然后,利用Difference3D_3d()函數(shù)分層進行側(cè)墻三維差積運算,其生成結(jié)果如圖11(b)—(c)所示。同時,通過模型細(xì)化輸出報告分析模型運行的性能,通過輸入每個建筑物側(cè)墻和窗戶的三維模型,對腳本生成工具的執(zhí)行時間進行分類統(tǒng)計和匯總計算,其結(jié)果如表5所示。
(a) 批量三維差積腳本工具
(b) 側(cè)墻分層鏤空(c) 屋頂鏤空
表5 側(cè)墻模型細(xì)化實驗統(tǒng)計
需要說明的是,模型中腳本程序執(zhí)行時間與建筑物樓層數(shù)、門窗的數(shù)量相關(guān),取樓層數(shù)平均值(4.64層)、建筑物數(shù)量(130)、腳本操作時間和模型運行時間相乘,得出生成實驗區(qū)內(nèi)全部建筑物的窗戶三維模型需要總的運行時間約為223.69 min。
2.3.5 模型紋理貼圖
利用百度全景影像圖功能,從全景影像圖中提取建筑物的側(cè)面紋理??紤]建筑物的部分側(cè)面紋理會被行道樹、路燈等地面物體遮擋,需要利用圖像處理軟件將遮擋部分裁剪掉,選擇沒有遮擋的影像作為建筑物側(cè)墻、門窗和屋頂模型部件的紋理(圖12(a)—(c))。然后,利用ArcGIS Pro導(dǎo)入上述模型生成的側(cè)墻、門窗和屋頂部件模型,利用其MultiPatch紋理編輯功能為側(cè)墻、門窗和屋頂賦予相應(yīng)的紋理影像,其可視化效果如圖12(d)所示。
(a) 截取的全景影像 (b) 提取的側(cè)墻紋理 (c) 提取的窗戶紋理
(d) 全部紋理貼圖
為便于用戶操作、開發(fā)和功能擴展,采用ArctoolBox設(shè)計建模工具箱實現(xiàn)建筑物三維模型的自動構(gòu)建, 構(gòu)建的工具箱由數(shù)據(jù)預(yù)處理、三維建模、模型細(xì)化、模型導(dǎo)出和腳本工具5個工具集組成。其中,數(shù)據(jù)預(yù)處理工具集由窗戶和窗框多邊形提取、建筑物邊界多邊形概化、建筑物邊界多邊形提取和建筑物層數(shù)提取4個模型工具組成; 三維建模工具集由清理中間文件、生成側(cè)墻、生成側(cè)墻窗戶、生成側(cè)墻窗框、生成側(cè)墻門、生成屋頂和生成屋頂窗戶7個模型工具集組成; 模型細(xì)化工具集主要由側(cè)墻細(xì)化和屋頂細(xì)化2個模型工具組成; 模型導(dǎo)出工具集主要由模型導(dǎo)出一個模型工具組成,這些模型工具集依次執(zhí)行實現(xiàn)建筑物三維模型的自動構(gòu)建。
為驗證本文所提建模方法的有效性、可靠性可操作性和運行效能,選擇淮陰師范學(xué)院北校區(qū)為建模實驗區(qū),如圖13所示。以高分辨率衛(wèi)星影像、建筑物輪廓電子地圖和全景影像為建模數(shù)源,在ENVI和ArcGIS平臺下,通過數(shù)據(jù)集成和預(yù)處理,提取出建筑物的幾何邊界、高度、樓層數(shù)和屋頂特征等信息; 利用ModelBuilder可視化建模工具,通過調(diào)用數(shù)據(jù)處理、文件轉(zhuǎn)換、空間分析和腳本工具,構(gòu)建模型實現(xiàn)了建筑物三維模型的自動構(gòu)建; 同時,利用ArcGIS Pro導(dǎo)入構(gòu)建的模型并對模型進行紋理貼圖,從而實現(xiàn)模型的可視化,結(jié)果如圖14所示。
圖13 建模實驗區(qū)概況圖
(a) 宿舍區(qū)場景 (b) 體育館、生化實驗樓和泓文樓場景
(c) 圖書館、崇文樓和辦公樓場景1 (d) 圖書館、崇文樓和辦公樓場景2
同時,為測試本文建模方法的可操作性和性能,在聯(lián)想B590筆記本和WIN7操作系統(tǒng)平臺下,與傳統(tǒng)SketchUp手工建模方法進行了拉伸建模對比實驗,其結(jié)果如表6所示。
表6 建筑物建模實驗對比統(tǒng)計和分析
需要說明的是,采用ModelBuilder建模只需要3次人機交互,便可批量生成整個實驗區(qū)側(cè)墻、門窗和屋頂?shù)娜S模型; 而采用傳統(tǒng)SketchUp手工建模方法,需要的人機交互的次數(shù),不僅與建筑物多邊形數(shù)量、樓層數(shù)和門窗的數(shù)量等因素密切相關(guān),而且與每個工具操作的時間和用戶熟練程度等因素密切相關(guān),本文將它們進行簡單的相乘可得出最小的人機交互次數(shù),利用教學(xué)實踐且在老師的指導(dǎo)和監(jiān)督下,學(xué)生最少需要14 d才能完成模型的構(gòu)建,無論是在時間成本和操作效率上,本文建模方法都具有明顯的優(yōu)勢。
近些年來,建筑物三維建模一直是國內(nèi)外研究的熱點,已提出多種建模方法,并進行了大量可視化實踐。本文提出基于多源數(shù)據(jù)集成的建筑物三維建模方法,集成高分辨遙感影像、無人機航空影像、建筑物電子地圖和全景影像為數(shù)據(jù)源,借助GIS建模功能,實現(xiàn)多源建模數(shù)據(jù)的自動預(yù)處理和三維建模,同時借助紋理映射技術(shù)實現(xiàn)模型的可視化,與現(xiàn)有建模方法相比具有以下優(yōu)勢:
1) 以遙感影像、建筑物輪廓電子地圖和網(wǎng)絡(luò)全景影像等海量多源數(shù)據(jù)為建模數(shù)據(jù)源,不僅能夠提取城市范圍內(nèi)建筑物的宏觀邊界,而且能夠捕捉到建筑物的幾何細(xì)節(jié)和紋理細(xì)節(jié)特征。借助GIS建模功能,通過構(gòu)建模型實現(xiàn)建筑物側(cè)墻、屋頂結(jié)構(gòu)部件的空間信息和屬性信息,對于提高建模的準(zhǔn)確性和模型精度有顯著提升,可顯著提高建模自動預(yù)處理效率,為實現(xiàn)建筑物的精細(xì)化建模奠定基礎(chǔ)。
2) 基于 CSG的建筑物三維建模方案是切實可行的,借助GIS建模功能,建筑物三維模型的自動構(gòu)建,能夠顯著降低作業(yè)人員的勞動強度并提高建模效率。模型創(chuàng)建過程中產(chǎn)生的中間文件和建模結(jié)果、模型和腳本程序代碼在模型構(gòu)建中十分易于修改和重復(fù)使用,可靈活地對建模參數(shù)和過程進行調(diào)整,為建模過程的監(jiān)控并對建模結(jié)果進行檢查和核對提供了重要的依據(jù)。
3) 除模型可視化階段涉及的紋理貼圖需要借助專業(yè)圖像處理軟件制作外,與建模相關(guān)的數(shù)據(jù)預(yù)處理、建模和模型細(xì)化相關(guān)操作都在同一種GIS平臺下完成,更加符合熟悉GIS用戶的操作習(xí)慣,顯著提高了建模的可操作性、實用性和操作效率; 創(chuàng)建的模型可輸出為各種格式的三維模型文件,更便于建模成果的傳播、交流和共享。
本文提出多源數(shù)據(jù)集成的城市建筑物三維建模方法,并進行建模工具箱的設(shè)計、開發(fā)和建模實例分析,其目的在于探索城市大規(guī)模建筑物程序自動建模的原理、方法、算法和軟件開發(fā)架構(gòu),是對現(xiàn)有典型GIS系統(tǒng)的功能、性能和穩(wěn)定性的一次有效驗證,為開發(fā)具有自主知識版權(quán)的建筑物三維建模與可視化軟件產(chǎn)品奠定技術(shù)基礎(chǔ)。借助GIS建模功能,通過數(shù)據(jù)預(yù)處理、三維建模和模型細(xì)化3個模型對校園范圍內(nèi)形態(tài)相對規(guī)則的建筑物進行了批量建模測試,取得了良好的建模性能與可視化效果,對城市大規(guī)模城市建筑群建模與可視化同樣有借鑒意義。如何將上述模型進行整合、優(yōu)化模型性能以提高其作業(yè)效率,將是未來研究工作的重點。