王海濤,宋文浩,秦進春
(1.西安測繪總站,陜西 西安710054;2.西安測繪研究所,陜西 西安710043)
基于ArcEngine的三維城市建模方法
王海濤1,宋文浩1,秦進春1
(1.西安測繪總站,陜西 西安710054;2.西安測繪研究所,陜西 西安710043)
三維城市建模是進行三維城市空間分析的基礎,也是構建“數字城市”的重要手段。研究了利用ArcEngine組件對象模型構建三維城市模型的方法,將三維城市建模分為地上地物建模和地下管網建模,分別探討了通過幾何體拉伸、組合等操作構建地上地物模型和通過圓柱體擬合構建地下管線的方法,分析了利用3DMax軟件構建三維管件模型的方法,通過實驗驗證了該方法的可行性,為城市規(guī)劃部門輔助決策提供依據。
ArcEngine;地上地物;地下管網;建模
研究三維城市構建方法在城市的現代化建設中具有很實際的意義[1]。一般而言,城市由地上場景和地下管網組成,二者相互協(xié)作才能保證城市的正常運行,因此,三維城市建模分為地上場景建模和地下管網建模。ArcGIS提供Multipath數據模型用于描述地理空間中的三維對象,Multipatch數據模型是由具有三維坐標的點按照一定順序組成的集合。由于點與點之間排列方式的不同,Multipath數據模型具有三角形、三角條帶、三角扇和環(huán)等4種類型[2]。
地理空間要素按類型可以分為點狀要素、線狀要素和面狀要素,點狀地物包括路燈、電話亭、樹等,ArcGIS符號庫中提供了大量點狀地物模型,可以滿足需求;線狀地物包括道路、河流等,這類地物的建模主要是通過獲取地物輪廓節(jié)點,再將其組合成面狀模型,以元素(element)表達;面狀地物主要指建筑物,需要獲取其在平面上的橫截面,再將該橫截面進行拉伸組合就能得到建筑物的三維模型。
1)線狀要素三維建模方法。在二維矢量ShapeFile數據中,線狀要素均是以節(jié)點集合存儲,因此,線狀要素建模首先要讀取線狀要素各節(jié)點坐標,將其轉化為多片(multipatch)的點集合,再獲取其三維高程信息,將二維點集合轉化為三維點集合,然后將該三維點集合以幾何對象(geometry)表示[3],最后將該幾何對象以多片的形式添加到三維場景中,具體流程如圖1所示。
2)面狀要素三維建模方法。面狀建筑物可以由其橫截面通過拉伸構建,其一般思路是獲取建筑物輪廓橫截面坐標頂點信息,組合構成多邊形,對該多邊形進行垂直拉伸,得到一個三維空間幾何體,將該幾何體以元素的形式添加到場景中,具體過程如圖2所示。
圖1 線要素建模流程圖
圖2 建筑物拉伸圖
城市地下管網紛亂復雜,如果對地下管網系統(tǒng)中所有管線和管件進行建模,不僅嚴重影響建模效率,而且建成后的地下管網模型也會比較復雜。為了構建美觀、高效、實用的城市地下管網三維模型,需要在保證視覺逼真效果的基礎上對地下管網進行適當簡化。簡化地下管網的關鍵有兩點:一是簡化管線,二是抽象管線[4]。簡化管線的目的是舍去管網系統(tǒng)中重要性比較次要的支流管線,抽象管線是指將管網系統(tǒng)抽象為僅由直管和管件組成的系統(tǒng),因此,管網建??梢苑譃橹惫芙:凸芗5]。
2.1 直管建模。
本文采用ArcGIS提供的Multipath數據模型建立地下管線三維模型,將直管抽象為圓柱體,用正多邊形描述圓柱體,將正多邊形體上下面頂點交叉組合構成三角條帶(Multipath對象),從而構建出直管三維模型[6]。需要注意的是,頂點數量要保持適中,以便在減少運算量的同時保證建模的逼真度。一般情況下,頂點數為8~10時既能有效提高建模效率,又能保證模型的逼真度。本文將直管抽象為正十邊圓柱體,如圖3所示。研究利用Multipath數據建模構建直管模型的方法如下:
1)數據獲取。獲取管線要素類(featureClass),依次讀取每個管線要素(feature),獲取每條管線的起終點坐標、管徑、埋設方式及長度等屬性信息。
2)頂點坐標計算。利用ArcEngine提供的向量接口(IVector3D中的方法ConstructDifference)構造管線起點A到終點B的向量利用該接口下的ConstructVector3D方法計算向量的垂直向量將管徑賦給將向量繞向量AB方向旋轉得到A2點坐標;依次類推,計算正十邊形上其他各頂點坐標。
3)構建三角條帶。選擇正十邊形底面圓上相鄰兩點A1、A2,在頂面圓上選擇與A1連線平行于AB的點B1,這三點A1A2B1構成第一個三角片對象;以此類推,可以組成三角形B1B2A2、A2A3B2、B2B3A3等,每個三角片都是位于不同平面的多片,它們之間僅有一條公共邊線和兩個公共頂點連接,構成了三角條帶,三角條帶首尾相連構成了正圓柱體。
4)布置管線模型。根據管線類型對管線進行顏色渲染,以便在三維場景中區(qū)分。將上述管線三維模型轉化為空間幾何對象(geometry),將管線模型以元素(element)的形式添加到三維場景中對應的位置。利用起點A的坐標計算出A1點坐標;計算正圓柱體每條邊對應的圓心角∠A1AA2,利用空間旋轉接口(ITransform3D下的RotateVector3D方法)
圖3 直管三維建模構造圖
2.2 管件建模
管件是城市地下管網系統(tǒng)中起控制、分流、連接、變向等作用的零部件。本文研究了運用3DMax建模軟件構建地下管網系統(tǒng)中管件三維模型的方法,將基本幾何體進行拉伸、旋轉、組合等操作,構建閥門、堵頭、彎頭、流量計、三通管等管件三維模型。將構建好的三維管件模型(3ds文件)統(tǒng)一存儲在ArcGIS的style符號庫中。在構建城市地下管網三維場景時,參考管線連接相關規(guī)范及管件連接標準,綜合考慮管線交叉處的管線個數、管徑和流向等情況,選用合適的三維管件模型,調整管件模型的位置和大小,使其與直管完好匹配。
城市三維場景建模的數據源是地上地物二維矢量Shapefile數據,該數據主要分字段描述地上要素的相關屬性。本文以某市地下管線普查數據為數據源,利用ArcEngine數據模型與C#編程實現了三維城市建模的實驗驗證,具體步驟如下:
1)讀取地上地物要素類(featureClass),判斷要素類型,選擇合適的點線面建模方法,將模型添加到三維場景中。
2)讀取地下管線要素類,將其劃分為正十邊體,計算圓柱體頂點坐標,擬合直管模型,將其添加到三維場景中。
3)利用3DMax軟件構建常用管點三維模型,將其存儲于ArcGIS符號庫,根據管點的類型調用合適的管點模型,讀取管點位置信息,將模型添加到該位置處。
4)通過上述3個步驟,構建出三維城市場景,地上部分如圖4,地下部分如圖5。
圖4 地上三維場景圖
圖5 地下管網三維場景圖
現代化的城市GIS系統(tǒng)往往要具備三維可視化及三維空間分析功能,而這些功能的構建都是以三維城市可視化為基礎。本文重點研究了利用ArcEngine組件對象模型構建三維城市的方法,解決了城市三維可視化過程中的若干關鍵技術問題,為相關個人及組織進行城市三維可視化方面的研究提供參考。
[1] 余慧明.城市地下管網綜合地理信息系統(tǒng)的設計與實現[D].鄭州:信息工程大學,2007
[2] 李培軍.基于GIS的地下管網可視化研究[D].鄭州:信息工程大學,2006
[3] 嚴勇.地下管線的三維可視化研究[D].武漢:武漢大學,2003
[4] 常河.Google ShetchUp與ArcGIS在城市三維地下綜合管網中的應用研究[D].云南:昆明理工大學,2008
[5] 孟祥華.管線三維可視化管理系統(tǒng)中的拓撲分析與實現[D].青島:山東大學,2012
[6] 杜國明,龔健雅,熊漢江,等.城市三維管網的可視化及其功能實現的關鍵技術[J].武漢大學學報(信息科學版),2002,27(5):534-537
[7] 彭強勇,周衛(wèi),張彥彥,等.基于ArcEngine的地圖整飾功能的實現[J].現代測繪,2007,30(4):42-44
P208
B文章編號:1672-4623(2017)06-0090-03
10.3969/j.issn.1672-4623.2017.06.028
王海濤,碩士,研究方向為GIS開發(fā)與地理信息服務。
2016-02-25。
項目來源:國家自然科學基金資助項目(41301526)。