張嘯雷,王冬
(1.天津市公安局經(jīng)濟(jì)技術(shù)開發(fā)區(qū)分局,天津 300457; 2.天津市測(cè)繪院,天津 300381)
從 20世紀(jì) 80年代末以來(lái),由于二維地理信息系統(tǒng)將實(shí)際的三維事物采用二維的方式表示,具有很大的局限性,大量的多維空間信息無(wú)法得到利用,這就需要研究三維地理信息系統(tǒng),于是三維地理信息系統(tǒng)成為GIS領(lǐng)域中的一個(gè)研究熱點(diǎn)。而三維地理信息系統(tǒng)的實(shí)現(xiàn)必須首先解決場(chǎng)景可視化問(wèn)題,其中房屋作為場(chǎng)景中重要的組成部分,它的可視化建模技術(shù)的發(fā)展和研究一直很引人關(guān)注。
使用常用的三維可視化開發(fā)工具,如Direct3D、Java3D、VRML和OpenGL等進(jìn)行三維GIS的實(shí)現(xiàn)時(shí),都需要從底層編寫代碼,工作量巨大,而且通常功能上不能滿足實(shí)際需要。ESRI公司基于COM技術(shù)構(gòu)建的ArcEngine是一套強(qiáng)大的GIS二次開發(fā)組件庫(kù),使用戶可以根據(jù)需要對(duì)原有的系統(tǒng)軟件功能進(jìn)行功能擴(kuò)展,其中的擴(kuò)展模塊ArcScene模塊完全可以實(shí)現(xiàn)三維GIS的開發(fā)。用其進(jìn)行二次開發(fā),一方面可簡(jiǎn)化代碼的編寫;另一方面它的代碼執(zhí)行速度快,占用內(nèi)存小,所以越來(lái)越得到三維地理信息系統(tǒng)應(yīng)用開發(fā)者的青睞 。
ArcGIS 3D分析模塊是ArcEngine組件的一部分,它內(nèi)含3D對(duì)象模型、3D幾何模型以及3D Viewer對(duì)象,其核心應(yīng)用是ArcScene。同時(shí)它支持具有Z值的幾種3D幾何要素,點(diǎn)(Point)、線(Line)、面(Polygon)和多面片(MultiPatch)。其中多面片是由三角條帶(Triangle Strip)、三角扇(Triangle Fan)和環(huán)(Ring)組成,整個(gè)面片是由二維平面圖形向 Z方向拉伸而形成。因此可以方便地將原有的ArcGIS地理信息數(shù)據(jù)增加三維Z值數(shù)據(jù)然后在ArcScene中實(shí)現(xiàn)三維GIS的功能。
圖1 ArcScene 3D對(duì)象模型
圖1中的SceneGraph對(duì)象主要用來(lái)處理3D可視化,如:實(shí)現(xiàn)3D圖形繪制方法、管理不同Viewer中的渲染、為方便快速繪制而管理內(nèi)部的緩存、為交互操作優(yōu)化性能等;Viewer對(duì)象主要實(shí)現(xiàn)影像的導(dǎo)出和快照等;Camera對(duì)象則定義了每個(gè)Viewer的視角方向和位置。
通常,要實(shí)現(xiàn)三維GIS,都要從數(shù)據(jù)準(zhǔn)備開始進(jìn)行。將三維GIS需要表現(xiàn)的數(shù)據(jù)分為兩類:分別是三維地形數(shù)據(jù)和三維管線數(shù)據(jù)。
在系統(tǒng)的實(shí)現(xiàn)過(guò)程中,如果將全部的二維地理信息數(shù)據(jù)都實(shí)現(xiàn)三維轉(zhuǎn)換,不僅需要很長(zhǎng)的轉(zhuǎn)換時(shí)間,而且三維地理信息瀏覽的過(guò)程中由于數(shù)據(jù)量和運(yùn)算量巨大,導(dǎo)致系統(tǒng)運(yùn)行速度緩慢。因此在三維 GIS的實(shí)現(xiàn)時(shí)采用了較實(shí)用的方法,先在傳統(tǒng)GIS系統(tǒng)中進(jìn)行地理信息數(shù)據(jù)操作,然后對(duì)目標(biāo)區(qū)域進(jìn)行選擇生成三維地理信息數(shù)據(jù),進(jìn)而實(shí)現(xiàn)三維GIS功能。
如圖2是三維GIS的實(shí)現(xiàn)過(guò)程:
圖2 三維GIS的實(shí)現(xiàn)過(guò)程
通常,三維地形的實(shí)現(xiàn)主要采用模擬的形式來(lái)實(shí)現(xiàn),比如房屋建筑數(shù)據(jù)通過(guò)系統(tǒng)的樓層等屬性來(lái)虛擬出房屋的大概高度,植被數(shù)據(jù)通過(guò)生成三維符號(hào),然后用三維符號(hào)來(lái)表示。
(1)三維房屋的實(shí)現(xiàn)
ArcScene中提供了面片(MultiPatch)、三角條帶(TriangleStrip)對(duì)象建模。由此可以利用這些對(duì)象來(lái)構(gòu)建房屋模型。其中一個(gè)最簡(jiǎn)單的三維房屋模型是一個(gè)火柴盒式的六面體,在利用ArcScene建立三維房屋模型時(shí),建筑物的各個(gè)面是由不規(guī)則三角形組成,即構(gòu)成墻體的多面片(MultiPatch)是由三角條帶(TriangleStrip)組成的。建立的房屋模型是由底面、幾個(gè)墻體側(cè)面和房頂組成。
具體實(shí)現(xiàn)步驟是:根據(jù)選擇的二維地面數(shù)據(jù)圖層中的房屋數(shù)據(jù),取得這些房屋的樓層數(shù)屬性,根據(jù)樓層假設(shè)一個(gè)單層樓層的高度值,然后用樓層數(shù)乘以單層樓高,即獲得該房屋的高程(Z值),如:一個(gè)5層的房屋,假定一層為 3 m,最后系統(tǒng)將算得的 15m存入三維數(shù)據(jù)的Z值;接下來(lái)將該房屋的二維面(Polygon)圖形作為建筑物的底面,根據(jù) Z方向的拉伸值將各個(gè)邊拉伸,拉伸后形成的面為墻體,最后為建筑物創(chuàng)建一個(gè)平的房頂;為了使建筑模型更有真實(shí)感,可以將拍攝的紋理貼在建筑物的表面。
(2)三維植被的實(shí)現(xiàn)
ArcScene本身提供豐富的符號(hào)庫(kù)支持,而且還可以在ArcScene中導(dǎo)入利用3DMax等三維建模工具建立的三維模型,利用這一特性,可以將各種二維地理信息數(shù)據(jù)用三維符號(hào)表示。植被,水系等具有類別性質(zhì)的地理信息數(shù)據(jù)就可以用代表性強(qiáng)的三維模型和符號(hào)來(lái)表示。
三維植被的實(shí)現(xiàn)步驟比較簡(jiǎn)單,根據(jù)植被的點(diǎn)或者面的特性,分別配置不同的三維符號(hào),如:在行樹這類數(shù)據(jù)中,可以根據(jù)數(shù)據(jù)的屬性,分別為不同種類的行樹配置不同的符號(hào),屬性是楊樹的可以配置一類符號(hào),屬性是松樹的可以再配置一類符號(hào)。例如:用圖 3來(lái)表示楊樹,用圖 4來(lái)表示松樹。
圖3 楊樹3D符號(hào)
圖4 松樹 3D符號(hào)
三維地形數(shù)據(jù)的實(shí)現(xiàn)結(jié)果如圖 5所示。
圖5 三維地形的實(shí)現(xiàn)
三維管線的生成是一個(gè)復(fù)雜的工作,由于管線的埋設(shè)方式分為兩類:一類為直接埋設(shè),例如污水管線;另一類為管溝埋設(shè),例如電信管線。因此,在選擇管線三維顯示方式時(shí),應(yīng)先判斷管線的埋設(shè)方式。對(duì)于直埋方式的管線,由于要求不高,所以可用圓柱體代替,在ArcScene中直接選擇相應(yīng)的線型圓柱符號(hào)即可。而對(duì)于管溝埋設(shè)的方式管線,如在系統(tǒng)中的電信管線,由于采用的是方管,在ArcScene中沒(méi)有直接的符號(hào)可以用,因此需要自己生成。
三維管線的實(shí)現(xiàn)主要是通過(guò)向二維管線數(shù)據(jù)中添加三位高程值Z值來(lái)實(shí)現(xiàn)的。
(1)直埋式管線的實(shí)現(xiàn)
在系統(tǒng)中為直埋式管線設(shè)定了線型圓柱符號(hào),但是在系統(tǒng)中還需要將管徑這一屬性進(jìn)行視覺(jué)表達(dá),因此用分類符號(hào)渲染的方法對(duì)管線進(jìn)行不同粗細(xì)的渲染。如下是實(shí)現(xiàn)管線分類渲染的方法:
首先定義分類渲染接口,然后設(shè)定每種分類線型符號(hào),如管徑,顏色等值,最后利用分類渲染接口,將這些不同類的管線進(jìn)行分類渲染。三維顯示效果如圖 6所示。
圖6 三維管線圖
(2)電信管線的實(shí)現(xiàn)
由于電信管線的線型采用方管,在ArcScene中沒(méi)有直接的符號(hào)可以利用,需要進(jìn)行動(dòng)態(tài)生成。
首先,可以得到管線的三維坐標(biāo),比如:直線(X1, Y1,Z1)-(X2,Y2,Z2)。
然后,將該三維管線的三維坐標(biāo)作方管的地中心線,按照方形的對(duì)角線方向分別平移,一條線的兩個(gè)坐標(biāo),經(jīng)過(guò)平移后得到 4條新線,這 4條新線分別是方管的4條邊,例如新生成的 4條邊的坐標(biāo)為:(設(shè)方管的半徑為:r)
第1條:(X1+r/2,Y1,Z1+r/2)-(X2+r/2,Y2,Z2+r/2)
第2條:(X1+r/2,Y1,Z1-r/2)-(X2+r/2,Y2,Z2-r/2)
第3條:(X1-r/2,Y1,Z1+r/2)-(X2-r/2,Y2,Z2+r/2)
第4條:(X1-r/2,Y1,Z1-r/2)-(X2-r/2,Y2,Z2-r/2)
最后由平移的坐標(biāo)分別生成方管的 4個(gè)面,在系統(tǒng)中的視覺(jué)看到的方管其實(shí)就是4個(gè)方管的三維面組成的。
經(jīng)計(jì)算生成的方管顯示效果如圖 7所示,綠色管為電信管線。
圖7 三維管線圖電信管線
在實(shí)際的項(xiàng)目實(shí)現(xiàn)過(guò)程中,通過(guò)二維GIS選定目標(biāo)區(qū)域,然后進(jìn)行三維渲染,利用上面介紹的方法很好解決了由于大范圍顯示三維場(chǎng)景而導(dǎo)致的系統(tǒng)速度緩慢的問(wèn)題。利用ArcScene已有的功能快速實(shí)現(xiàn)三維場(chǎng)景的建造,對(duì)于ArcScene沒(méi)有的功能,可以采用其他的方法來(lái)實(shí)現(xiàn),上面介紹的電信管線的實(shí)現(xiàn)僅僅是一個(gè)簡(jiǎn)單的示例??傊?實(shí)現(xiàn)一套完整的三維GIS是一項(xiàng)很龐大的工程,需要更多的努力,采用更新的技術(shù)來(lái)最終實(shí)現(xiàn)真正的三維系統(tǒng)。
[1] 李清泉,嚴(yán)勇,楊必勝等.地下管線的三維可視化研究[J].武漢大學(xué)學(xué)報(bào)(信息科學(xué)版),2003(03)
[2] 鄭淑榮,楊國(guó)東.信息系統(tǒng)中三維管線的顯示問(wèn)題探討[J].現(xiàn)代測(cè)繪,2003(6)
[3] 朱慶.三維動(dòng)態(tài)交互式可視化模型[J].武漢測(cè)繪科技大學(xué)學(xué)報(bào),1998,23(2):124~127
[4] 肖樂(lè)斌,鐘耳順,劉紀(jì)遠(yuǎn)等.三維 GIS的基本問(wèn)題探討[J].中國(guó)圖像圖形學(xué)報(bào),2001(09)