吳王潤 ,劉坡,吳塹虹
(1.中南大學地球科學與信息物理學院,湖南 長沙 410000; 2.中國科學院遙感與數(shù)字地球研究所,北京 100010)
傳統(tǒng)的三維城市模型大多是純幾何模型,忽略了語義和拓撲層面,僅用于可視化,對專題查詢、分析或空間數(shù)據(jù)挖掘等支持較差,可重用性有限[1]。CityGML 作為一種三維城市模型的數(shù)據(jù)存儲和交換格式,已經(jīng)成為一種國際標準,它具有較強的表達、檢索和共享三維地理信息的能力,極大地促進了三維地理信息的發(fā)展[2]。在國外,隨著CityGML 使用的日益增加和成熟,很多城市使用CityGML 作為三維城市建模的格式,如斯圖爾特、波恩和柏林。相關學者對CityGML 展開了一系列的研究,如標準的制定、模型的生成、可視化與存儲、模型簡化等。在國內(nèi),目前的研究主要側重于CityGML 標準的引進、建模方法的介紹、數(shù)據(jù)查詢和可視化,具體的應用案例比較少。CityGML 目前轉換方式主要有:FME[3,4],Libcitygml[3],3D City Database Import/Export[5]。本文對相關轉換軟件進行了總結及分析比較。另外,由于CityGML 是一種存儲模型,在可視化方面沒有做優(yōu)化[4],隨著HTML5 的出現(xiàn),瀏覽器的功能越來越強大,如何將CityGML 數(shù)據(jù)在瀏覽器中有效的可視化表達也是一個值得研究的問題。
本文的主要研究內(nèi)容:①CityGML 格式與特性的研究;②比較分析現(xiàn)有的轉換軟件及方法,將目前的三維模型轉換為CityGML 實現(xiàn)模型的存儲與共享;③探討CityGML 模型在瀏覽器中的可視化方法。
CityGML 是一個開放數(shù)據(jù)模型,采用XML 作為虛擬三維城市模型存儲和交換的數(shù)據(jù)格式。CityGML 數(shù)據(jù)模型覆蓋了城市對象的幾何、語義、拓撲、外觀各個方面,具有5 種不同的細節(jié)層次描述及專題模塊,每個模塊均有其屬性及相應的描述方法,可根據(jù)具體的應用,將理論擴展模型進行任意組合并最終與核心模型連接起來,這給不同應用需求的用戶的使用帶來了極大地便利,提高了使用的靈活性。
與傳統(tǒng)的三維模型相比,CityGML 有其獨有的優(yōu)勢與特性:
(1)5 層LOD 模型;對同一物體進行多層次細節(jié)的描述。
(2)語義/幾何一體化;同一物體在語義和幾何層面的描述一致化,如:一個房子有一扇門,則在幾何表述上一個房子包含一扇門。
(3)模塊化;CityGML 對虛擬城市三維模型中大多重要類型進行了分類定義,根據(jù)特別的信息數(shù)據(jù)選用結構中相應的子集。2012年4月推出的CityGML2.0,包括一個核心模塊CityGML Core 及13 個專題拓展模塊[7]。
(4)可擴展性;CityGML 提供擴展機制,可針對不同應用領域進行擴展,包括對現(xiàn)有模塊定義新屬性以及新對象模型的定義,實現(xiàn)在CityGML 框架下的統(tǒng)一建模和信息共享。
CityGML 用 CityModel 表示模型的根節(jié)點。CityGML 中每個對象對應一個具有完整的模型結構的CityObjectMember。不含語義信息的模型向CityGML轉換通常采用Generic 專題進行存儲。面信息用gml:SurfaceMember 標簽表示,主要包括多邊形面標簽gml:Polygon 及線環(huán)gml:LinearRing。紋理信息存于app:appearance 的app:surfaceDataMember 中,包括紋理文件及光源信息。
目前CityGML 文件轉換的方法主要由一些軟件及開源的插件支持,如:LandXplorer、FME、FZKViewer、Aristoteles3D、The 3D City Database Importer/Exporter
(以下簡稱CDIE)、Libcitygml、CityGML Building Export Plugin for SketchUp(以下簡稱CBEP)等。表1從軟件的推出機構、支持轉換為CityGML 的格式、CityGML 轉換輸出的格式和主要特點方面進行比較,滿足不同用戶和應用的需求。
表1 常用的模型轉換軟件的比較
從表1可以看出,主要有以下幾個特點:①軟件格式支持方面:FME 是專業(yè)轉換軟件,支持的格式較多,而其他的軟件支持相當較少,開源庫需要自定義轉換開發(fā);②支持LOD 方面:目前FME、LandXplorer 和CBEP軟件都支持LOD 分級存儲;③支持數(shù)據(jù)庫方面:LandXplorer 支持Oracle 和ArcSDE,CDIE 支持Oracle 或者PostGIS;④支持Shp 文件:目前LandXplorer 和FME 軟件都支持,可以將大量矢量屬性數(shù)據(jù)保留下來,減少語義信息的丟失。⑤可擴展性:相關專業(yè)軟件,擴展能力較弱,開源軟件擴展能力強,需要大量的開發(fā)。
另外,大多數(shù)軟件僅支持幾何變換,保證外觀特征一致,語義信息很少能做到完整有效的保留。而對于CityGML 來說,語義信息的保留、編輯與存儲尤為重要。目前LandXplorer 支持語義編輯,CBEP 只支持建筑物語義編輯,F(xiàn)ME 不支持編輯,但支持自定義的語義轉換。直接編輯在此就不加贅述,F(xiàn)ME 可采用圖1方式達到語義轉換的目的。以建筑為例,將建筑物各部分拆分至CityGML 標準對應的專題類型,采用自定義的模塊CityGMLGeometryCreator 用于CityGML 的幾何創(chuàng)建,包括選擇幾何類型、創(chuàng)建FeatureID、設置LOD、控制幾何屬性、創(chuàng)建gml_id 等。將輸出與AttributeCreator 函數(shù)連接,設置citygml_feature_role 與gml_parent_id,同時可加上自己定義的屬性值,達到語義轉換的目的。
圖1 傳統(tǒng)模型轉換至CityGML 的處理流程圖
綜上可得出:FME 適用于大多情況下的格式轉換,包括語義及LOD 等的支持;LandXplorer 編輯功能較為強大;Aristoteles3D、FZKViewer 更傾向于作為瀏覽器使用;CDIE 用于CityGML 存儲較為合適;CBEP 適合對建筑物的編輯;Libcitygml 擴展性好,適宜開發(fā)工作者對CityGML的解析轉換。用戶應根據(jù)不同的應用和自身的開發(fā)實力,選擇合適的軟件和工具來進行相關的轉換工作。
CityGML 的可視化表達有三種模式:①使用桌面瀏覽器,如FZKViewer、Aristoteles3D 等。這種方法可視化簡單易實現(xiàn),效果較好,可漫游,具備簡單查詢功能,但相對可移植性差、無法集成和開發(fā)。②利用citygml4j 類庫或底層圖形類庫OpenGL、Direct3D 等開發(fā)自己的瀏覽器[11,12],采用這種方法的缺陷在于工作量大且CityGML 格式在直接可視化方面支持不足[13]。③將CityGML 轉至較為有效的可視化格式如VRML、X3D 等在瀏覽器中可視化。這種方法較為簡單且隨著三維GIS 向著網(wǎng)絡化和分布式的發(fā)展,利用普通的瀏覽器進行三維模型的可視化將是一個重要的方向。
Web 上的3D 圖形可視化有眾多方式,如Flash,O3D,java3D 等,這些方式均需要使用特定的瀏覽器且安裝插件。所有的插件支持方式都存在安全性、操作系統(tǒng)不兼容以及開發(fā)人員不易開發(fā)的缺陷。WebGL 繪圖標準將JavaScript 與OpenGL ES 2.0 結合,在HTML5 的Canvas 元素中提供GPU 加速功能,解決了現(xiàn)有Web 交互式三維動畫的兩個問題:①Web 交互式三維動畫的制作是通過HTML 腳本本身,所以無需任何瀏覽器插件支持。②采用統(tǒng)一標準且跨平臺的OpenGL 接口實現(xiàn)底層的圖形硬件加速進行的圖形渲染[14]。
圖2 CityGML 屬性保存至XML 處理流程圖
HTML5 的3D 技術需要通過X3D 來實現(xiàn)。CityGML 轉換至X3D 過程中,語義信息的保留可以通過以下兩種方式:①使用CDIE 將CityGML 文件存于數(shù)據(jù)庫,CDIE 軟件開源且具有CityGML 存儲的解決方案,用戶可自行建立關聯(lián),在轉換至X3D 后通過SQL查詢得到語義信息。②在轉換過程中采用XML 存儲語義信息,如圖2所示。在實際應用當中,以LOD3 建筑物為例,雖模型本身存儲格式并不包含語義信息,但可通過編程同步X3D 文件與XML 文件中的ID,自定義拓撲關系規(guī)則,以保證幾何結構所對應的屬性信息的不丟失,同時也可為項目的應用分析提供支持。
本文實驗案例以SKP 為輸入模型,首先進行CityGML 的轉換,然后轉換至X3D,最后將其使用X3DOM 框架可視化在支持HTML5 的瀏覽器中。實驗采用浙江嘉興嘉善縣丁香花園小區(qū)的一棟房屋為例,原始的數(shù)據(jù)為SKP 格式,采用FME Desktop 2013 進行轉換,X3D-Edit 構建X3DOM 框架。
圖3 三維模型向CityGML 轉換
原始模型如圖3(a)所示,轉換方法如2.2 節(jié)所述,轉換后的CityGML 標準模型如圖3(b)所示,在Browser Toolbar 欄可以看到模型已經(jīng)分為窗戶、門等專題。由于不同軟件的環(huán)境光照的不同,小區(qū)顯示明暗程度有所不同,但不影響數(shù)據(jù)整體顯示的效果。整個轉換除去光照效果,模型的幾何結構及紋理信息均保持完好。對于光照問題可采用將相關的光照及陰影信息直接渲染到紋理上,以便更好還原原始模型顯示效果。
CityGML 轉至X3D 默認背景顏色為黑色,在X3D- Editor 中添加Background 節(jié)點并將模型嵌入X3DOM 框架后可實現(xiàn)無插件瀏覽器可視化且便于開發(fā)者開發(fā)。由于X3D 模型本身不帶語義。本實驗在模型轉換過程中采用2.3 節(jié)所述方式使用XML 存儲語義信息,在具體項目應用時,用戶可利用X3DOM 的射線相交得到圖形ID,并與XML 相連,通過HTML5的開發(fā)對圖形屬性進行查詢分析等操作。最終模型的顯示效果如圖4所示。
圖4 X3D 文件在瀏覽器中顯示
本文針對CityGML 格式轉換及可視化問題,分析了CityGML 的文件結構,總結并比較現(xiàn)有模型轉換軟件且提出了可行的轉換方法,最后探討了CityGML 在瀏覽器中可視化及案例驗證。通過本文的研究,可以為相關的三維模型制作單位和研究人員提供一定的參考。
[1]柳翠明.三維城市模型CityGML 初探[J].城市勘測,2010(zl):5 ~7,42.
[2]陳引川.對城市地理標記語言(CityGML)的探討[J].測繪科學,2009,34(5):145 ~146,135.
[3]Gr?ger G,Plümer L.CityGML -Interoperable semantic 3D city models[J].ISPRS Journal of Photogrammetry and Remote Sensing,2012,71:12 ~33.
[4]孫小濤.基于CityGML 的城市三維建模和共享研究[D].重慶:重慶師范大學,2011.
[5]胡波.基于CityGML 三維城市模型的語義查詢與共享研究[D].重慶:重慶師范大學,2012.
[6]Thomas H.Kolbe.Representing and Exchanging 3D City Models with CityGML[M].Berlin:Springer Berlin Heidelberg,2009.
[7]Gr?ger G,Thomas H.Kolbe,Angela Czerwinski,et al.City Geography Markup Language(CityGML)Encoding Standard[EB/OL].http://www.opengeospatial.org/standards/citygml,2012 -4 -4.
[8]Gerhard Juen,Ulrich Kaiser.CityGML - Toolchain[EB/OL].http://www.citygml.de,2013.
[9]Thomas H.Kolbe,K?nig G,Claus Nagel,et al.3D -Geo -Database for CityGML[EB/OL].http://www.3dcitydb.net,2009.
[10]張帆.三維城市環(huán)境下語義信息可視化之注記配置研究[D].武漢:武漢理工大學,2012.
[11]王志紅,張曉東,韓立欽等.CityGML 三維建模及其應用研究[J].礦山測量,2012,(3):26 ~29.
[12]許嬌龍,李軍,景寧等.基于CityGML 的三維城市模型實時可視化研究[J].系統(tǒng)仿真學報,2012,(6):1243 ~1246.
[13]Prieto I,Izkara J L,Delgado del H,et al.Efficient Visualization of the Geometric Information of CityGML:Application for the Documentation of Built Heritage[M].Berlin:Springer Berlin Heidelberg,2012:529 ~544.
[14]Behr J,Eschler P,Jung Y,et al.X3DOM -A DOM -based HTML5/X3D Integration Model[J].Web3D '09 Proceedings of the 14th International Conference on 3D Web Technology,2009:127 ~135.