關(guān)穎,童凌飛,張旭冬
(1.江西理工大學建筑與測繪工程學院,江西贛州 341000; 2.蘇州工業(yè)園區(qū)測繪有限責任公司,江蘇蘇州 215021)
基于OpenGISCityGML的外觀模型探討
關(guān)穎1?,童凌飛1,張旭冬2
(1.江西理工大學建筑與測繪工程學院,江西贛州 341000; 2.蘇州工業(yè)園區(qū)測繪有限責任公司,江蘇蘇州 215021)
根據(jù)當前三維城市GIS中的虛擬城市模型中存在的不足提出了CityGML的外觀模型,它是虛擬3D城市模型
CityGML;外觀模型;紋理
近年來,以二維為主的GIS已逐步向3DGIS發(fā)展,現(xiàn)有的大部分虛擬三維城市模型僅僅被界定為圖形模型或幾何模型,而忽略了語義和拓撲方面的表現(xiàn)。這些模型幾乎只能用作可視化,而不能進行主題查詢、任務(wù)分析或空間數(shù)據(jù)挖掘,因為模型的有限可重用性抑制了三維城市模型的廣泛運用,為了滿足多個應(yīng)用領(lǐng)域的信息需要,必須引進一個更一般的建模方法。但隨著研究的深入,人們發(fā)現(xiàn)建立一個通用的3DGIS平臺目前尚不具備條件[1]。因此,研究一種新的標記語言,使之具有較強的表達、檢索和共享三維地理信息的能力,將極大地促進三維城市GIS的發(fā)展和應(yīng)用,促進三維地理信息的共享,也為數(shù)字地球建設(shè)鑒定基礎(chǔ)。
CityGML(City Geography Markup Language,城市地理標記語言)的出現(xiàn)為三維地理信息的廣泛應(yīng)用和共享帶來了契機。越來越多的應(yīng)用系統(tǒng)在CityGML數(shù)據(jù)基礎(chǔ)上進行了擴展[2~3]。CityGML是一個為不同應(yīng)用領(lǐng)域共享的3D城市對象表現(xiàn)的通用語義信息模型。它定義了與城市最密切相關(guān)的地理對象的類和局部模型之間的關(guān)系,包括幾何屬性、拓撲屬性、語義屬性和外觀屬性。虛擬3D城市模型除了包括語義和幾何特性之外,還有一個重要的部分——外觀信息。外觀不僅僅是地物表面的一種可見的屬性,它還和任何基于表面的專題相關(guān),例如紅外輻射、噪聲污染[4]。因此,外觀數(shù)據(jù)可用來作為虛擬三維城市模型的呈現(xiàn)和分析的數(shù)據(jù)準備。CityGML為每一個城市模型的要素外觀支持任意數(shù)量的主題,每一個要素的連貫細節(jié)層次可以有各自的外觀,本文就CityGML的外觀模型進行探討,以期望對三維城市的外觀表現(xiàn)提供一些借鑒。
2.1 外觀、要素和幾何的關(guān)系
GML中的要素是指使用GML編碼的要素,例如一條公路、一條河、一個人、一輛車、一塊行政區(qū)域、一個事件等等。相應(yīng)的,在CityGML應(yīng)用中要素可以是與城市相關(guān)的一切,如城市的范圍、交通設(shè)施、城市建筑、園林綠地等等。外觀是地物表面的一種可見的屬性,它和任何基于表面的主題相關(guān),例如在CityGML中不僅僅指可見的地物外表,還可以指紅外輻射、噪聲污染。
在GML模式中定義了一系列的幾何原型,包括一維的、二維的、三維的幾何類型。gml:AbstractSurface-Type在GML模式中屬于二維幾何原型,它是面的抽象化,用來支持不同層次的復(fù)合體,Surface通常是指連續(xù)的平面區(qū)域,如道路、水面等等。一般來說,通過使用gml:AbstractSurfaceType的子類來表達GML表面,這些表面應(yīng)當是連續(xù)的。但是實際上獲取的現(xiàn)實世界的表面通常是不能保證連續(xù)的,所以CityGML允許在不同場合用gml:MultiSurface(由一個或多個gml:AbstractSurfaces定義)表達要素的邊界,以此來替代連續(xù)的表面。
另外,每一個CityObject要素可以儲存表面數(shù)據(jù)。因此表面數(shù)據(jù)布置在CityGML數(shù)據(jù)集的特征層次中。表面數(shù)據(jù)通過使用URI鏈接到它的目標面。即使鏈接機制允許任意的鏈接穿過一個特征面到另一個特征面,也推薦遵循局部性原理:表面數(shù)據(jù)應(yīng)當存儲,這樣被鏈接的表面只有隸屬于內(nèi)含的CityObject要素和它的子類。“全局”表面數(shù)據(jù)應(yīng)該和城市模型一起存儲。2.2 外觀和表面數(shù)據(jù)
一個外觀由面幾何對象的數(shù)據(jù)(如表面數(shù)據(jù))組成。單一的面幾何對象可能有多個主題的表面數(shù)據(jù)。類似的,表面數(shù)據(jù)也可以為多面幾何對象(如鋪設(shè)的道路)所共享。一個表面的表面數(shù)據(jù)值可以是恒定不變的,或是依賴于在表面內(nèi)部的確切位置。外觀對象為特定的主題(可以是獨立的要素或任意連貫細節(jié)層次的整個城市模型)收集有關(guān)的表面數(shù)據(jù),要素類Appearance為表面數(shù)據(jù)對象定義了一個容器。它提供了theme,所有包含的表面數(shù)據(jù)對象與之相關(guān)。在CityGML的外觀模型中,只用一個標識符代表主題,在給定主題的城市模型外觀由引用該專題的一套Appearance對象定義。因此,隸屬于同一個主題的Appearance對象組成一個虛擬組,同一主題的所有外觀對象可以認為是一個組的,它們可以在CityGML數(shù)據(jù)集中不同的位置。
_SurfaceData對象代表了表面數(shù)據(jù),它的每一個子類對象覆蓋面幾何對象的整個區(qū)域。表面數(shù)據(jù)和面幾何對象之間的關(guān)系通過一個URI鏈接來表達,該鏈接能夠從一個_SurfaceData對象鏈接到一個gml:AbstractSurfaceType類型或gml:MultiSurface類型的對象。表面數(shù)據(jù)對象被存儲在surfaceDataMember屬性中。它們可作為遠程屬性,同時用于多個專題中。要素類_ SurfaceData是材質(zhì)和紋理的基類。它僅有的元素是布爾標記isFront,該標記決定了一個表面數(shù)據(jù)對象適用的側(cè)面。外觀成員appearanceMember的定義顧及到了CityObject要素的任意的甚至是混合的序列,還考慮了CityModel要素集合內(nèi)部的外觀要素。為了存儲含有單一CityObject要素的外觀信息,屬性元素appearance擴充了核心模塊相應(yīng)的抽象類_CityObject。通過使用CityGML的應(yīng)用領(lǐng)域擴展機制將增加的屬性apppearance添加進了_CityObject。這意味著_CityObject的每一個專題子類都繼承該屬性。因此,定義_CityObject的專題子類使得apppearance模塊對每一個擴展模塊都有深遠的影響。根據(jù)上面的闡述,外觀成員appearanceMember和外觀appearance的定義為:
<xs:element name="appearanceMember"type="AppearancePropertyType"substitutionGroup="gm l:featureMember"/>
<xs:element name="appearance"type="AppearancePropertyType"substitutionGroup="core:_GenericApplicationPropertyOf-CityObject"/>
外觀表面數(shù)據(jù)類型AbstractSurfaceDataType,表面數(shù)據(jù)_SurfaceData,表面數(shù)據(jù)屬性類型SurfaceDataPropertyType的定義如下:
2.3 材質(zhì)、紋理和紋理映射
一個恒定的面屬性被塑造為材質(zhì)。依賴于表面內(nèi)部定位的面屬性被塑造為紋理。對每個專題和側(cè)面來說,每一個面幾何對象可以同時具有材質(zhì)和紋理。同時還要考慮到給面屬性提供一個近似值常量和一個復(fù)雜的尺寸。如果面幾何對象要獲取多個紋理或材質(zhì),那么每一個紋理或材質(zhì)都需要一個單獨的主題。
材質(zhì)反映了光的反射性能,對于整個表面幾何對象來說是不變的。X3DMaterial類的定義取自X3D和COLLADA規(guī)范。diffuseColor定義了擴散反射光的顏色。specularColor定義了直反射光的顏色。emissiveColor是由表面產(chǎn)生的光的顏色。所有顏色使用RGB值,red、green、blue分別取值0和1。透明度使用transparency元素定義,0代表完全不透明,1代表完全透明。ambientIntensity定義了diffuseColor的最小百分比,不管有沒有光源它都是可見的。shininess管理高光的清晰度,取值0代表產(chǎn)生了一個柔和的光芒,取值1代表產(chǎn)生了尖銳的光亮。isSmooth為正常插值提供了提示,如果這個布爾值標記設(shè)置成“true”,那么頂點法線應(yīng)當用作陰影。否則,法線對于表面應(yīng)該是不變的。
CityGML中的紋理通常是基于柵格的二維紋理。柵格圖像由imageURI使用一個URI來指定,它可以成為任意的圖像數(shù)據(jù)源甚至是網(wǎng)絡(luò)服務(wù)的格式化請求。在mimeType元素中可以使用標準的MIME類型定義圖像數(shù)據(jù)格式。
textureType屬性可以限制紋理。對于一個確定的對象來說,textureType與紋理之間的區(qū)別是特殊的,原型結(jié)構(gòu)對于對象表面是特有的。紋理也可能屬于未知的。紋理包裝取自COLLADA標準。當在基本圖像柵格外訪問一個紋理時需要紋理包裝。wrapMode可以是5個值中的一個:
①none-最終顏色是完全透明的;
②wrap-紋理是重復(fù)的;
③mirror-紋理是重復(fù)的并且是鏡像的;
④clamp-紋理被邊緣所包夾;
⑤border-borderColor元素(RGBA)指定最終顏色。
圖1展示了這些包裝模型的效果,其中a圖是基本圖像柵格,圖1(b)~圖1(f)是wrapMode分別取none、wrap、mirror、clamp、border所呈現(xiàn)的效果。
圖1 紋理包裝模型效果圖
GeoreferencedTexture類描述了使用平面投影的紋理。這樣一個紋理具有獨特的映射函數(shù),該函數(shù)經(jīng)常提供圖像文件或作為一個單獨的Esri文件。referencePoint定義了世界空間中的左上方圖像像素中心的位置。因為GeoreferencedTexture使用了平面投影,所以referencePoin是二維的。Orientation定義了圖像旋轉(zhuǎn)和縮放的2×2階矩陣。該變換的坐標參考系CRS是與referencePoint的CRS相同的。由一個referencePoint的CRS平面點(x,y)T轉(zhuǎn)變?yōu)榧y理空間中的點(s,t)T使用式(1):
M表示方向,PR表示referencePoint,w表示以像素為單位的圖像寬度,h表示以像素為單位的圖像高度。
ParameterizedTexture類描述了一個具有目標依賴映射函數(shù)的紋理。由_TextureParameterization類的子類定義的映射作為目標表面幾何對象的鏈接的一個屬性。每一個目標表面幾何對象在一個單獨目標元素的uri屬性中被指定為URI。因為target實現(xiàn)了gml:Association-AttributeGroup,它允許使用xlink:href屬性引用一個遠程的_TextureParameterization對象,例如在不同專題中目標或紋理之間共享一個映射函數(shù)。映射函數(shù)通過Tex-CoordList類可以使用紋理坐標的概念,也可以通過Tex-CoordGen類使用變換矩陣從世界空間轉(zhuǎn)換到紋理空間。
紋理坐標只適用于多邊形表面,這種多邊形的邊界由gm l:LinearRing(如gm l:Triangle,gm l:Polygon或gml:MultiSurface組成gml:Polygons)來描述。它們定義了一個表面頂點到紋理空間點的顯式映射,如包含內(nèi)環(huán)頂點的每一個頂點必須接收一個相應(yīng)的紋理空間坐標對,在圖2中,1、6、7、8接收紋理坐標對。內(nèi)部表面點的紋理坐標從頂點的紋理坐標平面插入。
圖2 使用紋理坐標的紋理定位
使用TexCoordList類指定目標表面幾何對象的紋理坐標作為紋理的target屬性中的紋理參數(shù)化對象。組成目標表面幾何對象的邊界的每一個外部或內(nèi)部的gml:LinearRing都需要它自身的紋理坐標設(shè)置。使用TexCoordList類的textureCoordinates元素指定一組紋理坐標。映射函數(shù)通過TexCoordList類可以使用紋理坐標(s,t)T計算出空間位置(x,y,z)T,也可以通過TexCoordGen類使用變換矩陣從世界空間轉(zhuǎn)換到紋理空間。另外,worldToTexture元素使用了gml:SRSReferenceGroup屬性定義它的CRS。世界空間中的定位在變換矩陣應(yīng)用之前必須首先轉(zhuǎn)換到這個CRS中。
以下結(jié)構(gòu)形成了worldToTexture變換,該過程模仿了城市模型世界空間投影一個定位到紋理空間中的定位的過程:
在式(2)中,f表示焦距;w和h代表圖像傳感器的外形尺寸;→r,→u和→d定義了攝影機的參考相框作為世界坐標中表達的右、上和攝影方向上的單位向量;P代表攝影機在世界空間中的位置,圖3描繪了這些方向和位置。
圖3 紋理空間中的坐標軸方向和攝影機位置
worldToTexture的另一個作用是用復(fù)雜幾何體構(gòu)成立面而不用為每一個gml:LinearRing都指定紋理坐標。相反,只有使用TexCoordGen作為參數(shù)化才能使立面的聚合表面變成紋理目標。然后,worldToTexture有效地編碼一種世界空間的正射投影到紋理空間中去。
本例中CityGML數(shù)據(jù)集基于簡單建筑物模型,它以給定的幾何呈現(xiàn)了兩個連貫細節(jié)層次:LOD1、LOD2。此外,數(shù)據(jù)集定義了兩個獨立的外觀主題:夏季主題和冬季主題,用來描述建筑物及其周邊地形的不同視覺外觀。每一個連貫細節(jié)層次都有一個應(yīng)用于特定主題的獨立外觀。在這個數(shù)據(jù)集中,使用了一些CityGML外觀模型的概念,如appearanceMember、Appearance、surfaceDataMember、X3DMaterial、GeoreferencedTexture等。關(guān)于外觀的構(gòu)建,部分代碼如下:
<cityObjectMember>
<bldg:Building gm l:id="Build0815">
<bldg:yearOfConstruction>2007</bldg:yearOfConstruction>
<bldg:measuredHeight uom="#m">5.0</bldg:measured-Height>
<bldg:lod1Solid>……..</bldg:lod1Solid>
<bldg:lod2Solid>……..</bldg:lod2Solid>
</bldg:Building>
</cityObjectMember>
<app:appearanceMember>
<app:Appearance>
<app:theme>Summer</app:theme>
<app:surfaceDataMember>
<app:X3DMaterial gml:id="lod1Material">
<app:diffuseColor>1.0 0.6 0.0</app:diffuseColor>
<app:target>#lod1Surface</app:target>
</app:X3DMaterial>
</app:surfaceDataMember>
………………………
</app:Appearance>
</app:appearanceMember>
<app:appearanceMember>
<app:Appearance>
<app:theme>W(wǎng)inter</app:theme>
<app:surfaceDataMember>
<app:GeoreferencedTexture>
<app:imageURI>ground_winter.png</app:imageURI>
<app:wrapMode>none</app:wrapMode>
<app:referencePoint>
<gml:Point>
<gml:pos srsDimension="2">458870 5438360</gml:pos>
</gml:Point>
</app:referencePoint>
<app:orientation>0.05 0.0 0.0-0.05</app:orientation>
<app:target>#ground</app:target>
<app:target>#lod1RoofPoly1</app:target>
<app:target>#lod2RoofPoly1</app:target>
<app:target>#lod2RoofPoly2</app:target>
</app:GeoreferencedTexture>
</app:surfaceDataMember>
<app:surfaceDataMember xlink:href="#lod1Material"/>
<app:surfaceDataMember xlink:href="#sideTexture"/>
<app:surfaceDataMember>
<app:ParameterizedTexture>
<app:imageURI>front_back_winter.png</app:imageURI>
<app:wrapMode>none</app:wrapMode>
<app:target uri="#fFront"xlink:href="#frontTexCoord"/>
<app:target uri="#fBack"xlink:href="#backTexCoord"/>
</app:ParameterizedTexture>
</app:surfaceDataMember>
</app:Appearance>
</app:appearanceMember>
對于第一個連貫細節(jié)層次LOD1,X3DMaterial對象定義了整個建筑物外觀的材質(zhì),除此之外,GeoreferencedTexture對象被同時應(yīng)用到地形以及建筑物的屋頂表面。在LOD2層次上,建筑物的垂直表面單獨使用ParameterizedTexture對象進行紋理化處理,而屋頂表面和地形再次使用GeoreferencedTexture對象來描述。數(shù)據(jù)集中GeoreferencedTexture對象用到的紋理映射也使用Esri格式。建模的結(jié)果產(chǎn)生了數(shù)據(jù)集的四幅視覺效果圖,如圖4和5所示。
圖4 CityGML的外觀模型以LOD1呈現(xiàn)簡單建筑物及其周邊地形
圖5 CityGML的外觀模型以LOD2呈現(xiàn)簡單建筑物及其周邊地形
數(shù)據(jù)集中使用ParameterizedTexture對象紋理化LOD2層次的建筑物垂直邊界面,通過使用紋理包裝模型wrap將facade.png圖像(如圖6所示)設(shè)定為側(cè)面,并且該圖像同時應(yīng)用于夏季和冬季兩個主題中。
圖6 用于建筑墻身的側(cè)面
CityGML1.0可以從語義上對城市建筑物三維模型進行描述,并可以在廣域網(wǎng)環(huán)境下實現(xiàn)建筑物三維模型的傳輸、共享和互操作[5]。CityGML提供通用共享模型和應(yīng)用擴展機制,用以支持各應(yīng)用領(lǐng)域基于CityGML構(gòu)建自己的專題模型,實現(xiàn)在CityGML框架下的統(tǒng)一建模和信息共享[6]。在CityGML的眾多模型中,外觀模型為虛擬三維城市的建模提供了較為直觀地顯示和便利??梢岳媒ㄖ锖统鞘性O(shè)施等的外觀模型來構(gòu)建我們期望得到的外觀,指導城市景觀設(shè)計,在合理構(gòu)建和規(guī)劃城市以及三維城市建模和信息共享方面起到積極顯著的作用。同時可以期待當CityGML成為OGC標準之后,會得到更多GIS平臺的支持[7],無疑會使得外觀模型的構(gòu)建更加快速和美觀。
[1] 孫敏,馬藹乃,陳軍.3DCM的研究現(xiàn)狀評述[J].遙感學報,2002,6(2):155~159.
[2] 陳引川.對城市地理標記語言(CityGML)的探討[J].測繪科學,2009,34(5):145~146.
[3] 葛廣昊.基于CityGML的大型建筑室內(nèi)三維模型研究[D].南京:南京師范大學,2011.
[4] Gerhard Groger,Thomas H.Kolbe,etc.OpenGISCity Geography Markup Language(CityGML)Encoding Standard Version 1.0.0[S/OL].http://www.opengeospatial.org/standards/citygm l.
[5] 陳引川,王青山.基于CityGML的城市建筑物三維建模研究[J].北京測繪,2011(3):8~10.
[6] 歐陽群東,巫兆聰,胡忠文,鄧媛媛.CityGML應(yīng)用領(lǐng)域三維建模研究[J].測繪科學,2011,36(3):166~168.
[7] 柳翠明.三維城市模型CityGML初探[J].城市勘測,2010(S1):5~7,42.
Discussion on the Appearance of the M odel Based on OpenGISCityGM L
Guan Ying,Tong Lingfei,Zhang Xudong
(1.Architecture and Engineering of Surveying and Mapping Institute of Jiangxi University of Science and Technology,Ganzhou 341000,China; 2.Suzhou Industrial Park Limited Liability Company of Surveying and Mapping,Suzhou 215021,China)
This article proposes the appearancemodel of CityGML from the lack of a virtual citymodel of the current 3D city GIS,it is important characteristics in a virtual3D citymodel except semantic and geometric characteristics,analyzes the relationship between feature and geometry in the appearancemodel and the function of the surface data related to the appearancemold related and make use ofmaterial,texture and texture mapping,studies the texture coordinates,the texture of packagingmodel,texturemapping function and its transformation matrix,and the concrete application example of the appearancemodel is given simultaneously.
CityGML;the appearancemodel;texture
1672-8262(2013)01-51-05
P208.2文獻標識碼:A
2012—06—06
關(guān)穎(1985—),女,碩士研究生,研究方向為:地理信息共享與互操作、地理信息系統(tǒng)應(yīng)用研究。
中除去語義和幾何特性之外的重要特性,探討分析了外觀模型中外觀與要素和幾何關(guān)系,與外觀模型相關(guān)的表面數(shù)
據(jù)的作用以及材質(zhì)、紋理和紋理映射的使用,研究了紋理坐標、紋理包裝模型、紋理映射函數(shù)及其轉(zhuǎn)換矩陣,同時給出
了外觀模型的具體應(yīng)用實例。