紀(jì)彥忠,李浩
(哈爾濱市勘察測(cè)繪研究院,黑龍江哈爾濱 150010)
CityMaker中三維模型數(shù)據(jù)的數(shù)據(jù)庫(kù)組織方法與應(yīng)用擴(kuò)展
紀(jì)彥忠?,李浩
(哈爾濱市勘察測(cè)繪研究院,黑龍江哈爾濱 150010)
CityMaker是一款優(yōu)秀的國(guó)產(chǎn)3D GIS平臺(tái)軟件。介紹了CityMaker平臺(tái)中三維場(chǎng)景數(shù)據(jù)的三種類(lèi)型:三維模型數(shù)據(jù)、矢量數(shù)據(jù)和地形數(shù)據(jù),重點(diǎn)分析了三維模型數(shù)據(jù)的組織方法和存儲(chǔ)結(jié)構(gòu),提出了CityMaker數(shù)據(jù)庫(kù)的兩個(gè)擴(kuò)展方法:訪口接口擴(kuò)展和屬性信息擴(kuò)展,彌補(bǔ)了CityMaker在屬性信息管理方面的不足。
CityMaker;三維模型;數(shù)據(jù)組織;屬性擴(kuò)展
空間數(shù)據(jù)組織主要指在數(shù)據(jù)集中表示空間信息的機(jī)制。計(jì)算機(jī)的效率很大程度上取決于數(shù)據(jù)的組織。在三維數(shù)字城市建設(shè)中,GB級(jí)甚至TB級(jí)的海量三維數(shù)據(jù)已經(jīng)司空見(jiàn)慣。大規(guī)模三維數(shù)字城市場(chǎng)景的數(shù)據(jù)內(nèi)容具有復(fù)雜性和海量性的特點(diǎn),表現(xiàn)在對(duì)象類(lèi)型繁多、模型精細(xì)程度不同、數(shù)量多且對(duì)象在空間上隨機(jī)分布、聚集和離散程度不均衡等方面[1,2]。為了實(shí)現(xiàn)海量三維數(shù)據(jù)的優(yōu)化顯示以及查詢分析,需要對(duì)海量的三維數(shù)據(jù)進(jìn)行高效的組織與管理。二維空間數(shù)據(jù)的組織與管理模式已經(jīng)由文件模式轉(zhuǎn)變到基于空間數(shù)據(jù)引擎的關(guān)系型數(shù)據(jù)庫(kù)模式,如MapInfo SpatialWare、ArcSDE、SuperMap SDX+等,很好地解決了圖屬一體化存儲(chǔ)管理、高效的數(shù)據(jù)訪問(wèn)檢索等問(wèn)題。借鑒二維空間數(shù)據(jù)的組織管理方式,利用大型關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)進(jìn)行三維空間數(shù)據(jù)一體化管理已成為發(fā)展方向[3~5]。
隨著空間信息技術(shù)的發(fā)展,三維地理信息平臺(tái)軟件已經(jīng)由實(shí)驗(yàn)室走向了商業(yè)應(yīng)用,國(guó)內(nèi)外涌現(xiàn)出大批的三維地理信息平臺(tái)軟件。這些軟件一方面具有逼真流暢的三維可視化效果,另一方面又具有高效的數(shù)據(jù)訪問(wèn)和管理能力。本文以一款優(yōu)秀的國(guó)產(chǎn)三維地理信息平臺(tái)軟件CityMaker為例,介紹和分析了其三維數(shù)據(jù)組織和管理方法,并根據(jù)應(yīng)用需求,對(duì)其進(jìn)行了擴(kuò)展,增強(qiáng)了其在應(yīng)用中的數(shù)據(jù)訪問(wèn)和屬性擴(kuò)展能力。
CityMaker系列軟件致力于全空間的、逼真、完美的虛擬三維可視化,將二維信息融入三維場(chǎng)景中,并將傳統(tǒng)的二維分析運(yùn)算擴(kuò)展成三維分析運(yùn)算,實(shí)現(xiàn)可視化、分析功能的二三維一體化[6]。
CityMaker系列產(chǎn)品覆蓋了三維數(shù)據(jù)生產(chǎn)、管理、應(yīng)用開(kāi)發(fā)整個(gè)過(guò)程,具體包括城市級(jí)海量3D GIS數(shù)據(jù)生產(chǎn)與維護(hù)平臺(tái)CityMaker Builder、企業(yè)級(jí)的3D GIS服務(wù)聚合與發(fā)布平臺(tái)CityMaker Server、通用的3D GIS應(yīng)用平臺(tái)CityMaker Explore以及3D GIS二次開(kāi)發(fā)組件庫(kù)CityMaker SDK。
3.1 三維場(chǎng)景數(shù)據(jù)的內(nèi)容
CityMaker中的三維場(chǎng)景,包括地形表面以上和以下一定范圍內(nèi)的空間地物。從認(rèn)知研究的觀點(diǎn),三維場(chǎng)景數(shù)據(jù)的內(nèi)容可以分為兩類(lèi):一類(lèi)為特征實(shí)體(Feature Entity),其特點(diǎn)是離散、同質(zhì),有明確定義的空間邊界,能被完整的定義,如建筑物、公共設(shè)施等;另一類(lèi)為場(chǎng)(Fields),其特點(diǎn)是具有光滑的連續(xù)空間變化,如地形表面。從平臺(tái)數(shù)據(jù)存儲(chǔ)的觀點(diǎn)來(lái)看,三維場(chǎng)景數(shù)據(jù)的內(nèi)容可以分為三類(lèi)[7]:
(1)三維模型數(shù)據(jù)
三維模型數(shù)據(jù)用以表達(dá)現(xiàn)實(shí)世界中的離散分布的三維實(shí)體,是構(gòu)成三維場(chǎng)景的最重要組成部分。在City-Maker中,三維模型數(shù)據(jù)采用面片模型表達(dá)三維實(shí)體,即用不同形狀的面片近似表示三維實(shí)體的表面,優(yōu)點(diǎn)是便于顯示和更新。三維模型數(shù)據(jù)可從外部文件導(dǎo)入,如?.3ds,?.osg等,也可以在CityMaker Builder中創(chuàng)建。
三維模型組成的場(chǎng)景以本地文件的形式保存(?.scd、?.sdb),也可以發(fā)布到服務(wù)器形成數(shù)據(jù)服務(wù)。
(2)矢量數(shù)據(jù)
CityMaker支持本地矢量數(shù)據(jù)的加載(如Shapefile數(shù)據(jù))、CityMaker定義的矢量數(shù)據(jù)服務(wù)(CityMaker Data Server)的加載、空間數(shù)據(jù)庫(kù)加載(如ArcSDE Database)以及符合OGC規(guī)范的數(shù)據(jù)服務(wù)(如WFS)。這些數(shù)據(jù)能夠直接被平臺(tái)識(shí)別和解析、并能加載到三維場(chǎng)景中。
(3)地形數(shù)據(jù)
利用平臺(tái)提供的CityMaker TerrainPush工具,將影像(DOM)及高程(DEM)數(shù)據(jù)發(fā)布成文件數(shù)據(jù)(?. ted),形成地形文件,也可以發(fā)布到MySQL、Oracle數(shù)據(jù)庫(kù)中,形成地形數(shù)據(jù)服務(wù)。
由于三維模型數(shù)據(jù)是三維場(chǎng)景數(shù)據(jù)的主要組成部分,且矢量數(shù)據(jù)、地形數(shù)據(jù)在二維空間數(shù)據(jù)組織管理中都有了很好的解決方案,因此,本文僅研究CityMaker中的三維模型數(shù)據(jù)。
3.2 三維模型數(shù)據(jù)的組織
三維模型數(shù)據(jù)在邏輯上是以場(chǎng)景組的形式組織的,即將同一種類(lèi)別的三維實(shí)體組織在一個(gè)圖層中,將相似類(lèi)別圖層再組織成場(chǎng)景組,多個(gè)場(chǎng)景組還可以組成一個(gè)大的場(chǎng)景組。呈現(xiàn)一個(gè)樹(shù)型的組織方式,而三維實(shí)體是指具有語(yǔ)義信息的三維模型數(shù)據(jù),如圖1所示。

圖1 三維模型數(shù)據(jù)邏輯組織
這一三維模型數(shù)據(jù)組織方式在CityMaker平臺(tái)內(nèi)部用XML形式描述。例如,一個(gè)管線場(chǎng)景組可以描述為:
<?xm l version="1.0"encoding="UTF-8"?>
<LAYERSCompactMode="1">
<LayerGroup Name="群力管線">
<LayerGroup Name="群力給水">
<Layer Name="群力給水閥門(mén)"Code="5547505181148643328"/>
<Layer Name="群力給水管井"Code="5547505181148643329"/>
<Layer Name="群力給水管線"Code="5547505181148643330"/>
</LayerGroup>
<LayerGroup Name="群力排水">
<Layer Name="群力排水管井"Code="5547505181148643331"/>
<Layer Name="群力排水管線"Code="5547505181148643332"/>
</LayerGroup>
<LayerGroup Name="群力弱電">
<Layer Name="群力弱電管井"Code="5547505181148643333"/>
<Layer Name="群力弱電管線"Code="5547505181148643334"/>
</LayerGroup>
<Layer Name="群力電力管線"Code="5547505181148643335"/>
</LayerGroup>
</LAYERS>
其中,LayerGroup是場(chǎng)景組(圖層組)節(jié)點(diǎn),該節(jié)點(diǎn)既可以嵌套場(chǎng)景組,也可以嵌套圖層。Layer是圖層節(jié)點(diǎn),是整個(gè)場(chǎng)景樹(shù)的葉節(jié)點(diǎn),不能再嵌套任何類(lèi)型。
3.3 三維模型數(shù)據(jù)的存儲(chǔ)
CityMaker的三維模型數(shù)據(jù)以兩種方式存儲(chǔ):關(guān)系型數(shù)據(jù)庫(kù)和本地大文件。關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)模式采用的是在服務(wù)器端架設(shè)MySQL數(shù)據(jù)庫(kù)。在MySQL數(shù)據(jù)庫(kù)中定義了多個(gè)表用以存儲(chǔ)三維模型以及三維場(chǎng)景組組織結(jié)構(gòu)。本地大文件存儲(chǔ)模式采用的是Firebird嵌入式數(shù)據(jù)庫(kù)文件。該文件的內(nèi)部表結(jié)構(gòu)與MySQL數(shù)據(jù)庫(kù)一致。本地大文件模式既可以像本地文件一樣加載,也可以通過(guò)發(fā)布工具發(fā)布到服務(wù)器上,形成數(shù)據(jù)服務(wù),供客戶端調(diào)用。
在數(shù)據(jù)庫(kù)內(nèi)部,CityMaker設(shè)計(jì)了7個(gè)表用來(lái)存儲(chǔ)三維模型和場(chǎng)景組織結(jié)構(gòu)內(nèi)容。表之間的關(guān)系如圖2所示。

圖2 三維模型數(shù)據(jù)表關(guān)系圖
其中,場(chǎng)景信息表(BIN_SCENE_INFO)用以記錄發(fā)布的三維場(chǎng)景,表中的每條記錄表示一個(gè)三維場(chǎng)景,包括場(chǎng)景ID、名稱(chēng)、定位信息、坐標(biāo)系、圖層組織、動(dòng)畫(huà)導(dǎo)航組織、特殊場(chǎng)景組織等,后三者以XML(Extensible Markup Language,XML)方式進(jìn)行描述,客戶端可以直接解析這些XML描述以便獲取三維場(chǎng)景的組織方式。動(dòng)畫(huà)導(dǎo)航表(BIN_SCENE_ANIMATION)用以記錄三維場(chǎng)景中定義的動(dòng)畫(huà)導(dǎo)航。動(dòng)畫(huà)導(dǎo)航指的是預(yù)先定義的固定漫游路徑,每個(gè)三維場(chǎng)景可以包含多個(gè)動(dòng)畫(huà)導(dǎo)航。動(dòng)畫(huà)導(dǎo)航數(shù)據(jù)以二進(jìn)制數(shù)據(jù)流的方式保存在表中的字段中。三維實(shí)體表(BIN_SCENE_ENTITY)用以記錄三維場(chǎng)景中每個(gè)三維實(shí)體的詳細(xì)信息,包括實(shí)體ID、所屬場(chǎng)景ID、所屬圖層、定位信息、表示該實(shí)體的三維模型ID和模型名稱(chēng)等。三維模型表(BIN_SCENE_MODEL)用以記錄三維實(shí)體對(duì)應(yīng)的三維模型文件,該三維模型文件以二進(jìn)制數(shù)據(jù)流的方式存儲(chǔ)在表的字段中。
從CityMaker開(kāi)放的開(kāi)發(fā)接口來(lái)看,CityMaker并沒(méi)有提供給用戶讀寫(xiě)三維模型數(shù)據(jù)庫(kù)的接口。同時(shí),從上述三維模型數(shù)據(jù)存儲(chǔ)結(jié)構(gòu)分析可以看到,City-Maker對(duì)三維實(shí)體的屬性描述僅僅局限于幾何體量信息,沒(méi)有任何與應(yīng)用相關(guān)的屬性信息的鏈接機(jī)制,給基于三維場(chǎng)景的行業(yè)應(yīng)用帶來(lái)了一定的困難。本文根據(jù)實(shí)際應(yīng)用需求,給出了相應(yīng)的數(shù)據(jù)庫(kù)擴(kuò)展方法。
4.1 訪問(wèn)接口的擴(kuò)展
CityMaker采用MySQL、Firebird數(shù)據(jù)庫(kù)作為三維數(shù)據(jù)的存儲(chǔ)介質(zhì),盡管CityMaker沒(méi)有封裝訪問(wèn)該數(shù)據(jù)庫(kù)的API(Application Programming Interface,API),但數(shù)據(jù)庫(kù)廠商已提供了對(duì)這兩種數(shù)據(jù)庫(kù)讀寫(xiě)的接口。因此,利用數(shù)據(jù)庫(kù)廠商提供的接口,對(duì)其做高層次封裝,即可實(shí)現(xiàn)對(duì)三維數(shù)據(jù)庫(kù)的讀寫(xiě)操作。本文基于ADO.NET數(shù)據(jù)庫(kù)訪問(wèn)技術(shù),分別利用MySQL數(shù)據(jù)庫(kù)的ADO.NET Driver for MySQL和Firebird數(shù)據(jù)庫(kù)的Firebird.NET Data Provider,設(shè)計(jì)和實(shí)現(xiàn)了具有統(tǒng)一接口的CityMaker數(shù)據(jù)庫(kù)訪問(wèn)組件,該組件的層次結(jié)構(gòu)如圖3所示。

圖3 CityMaker數(shù)據(jù)庫(kù)訪問(wèn)組件
在該組件中,抽象出兩個(gè)接口IDbConnFactory和IDbOperation,用于向外界提供統(tǒng)一的調(diào)研接口。其中,IDbConnFactory接口用于獲得單例的默認(rèn)數(shù)據(jù)庫(kù)連接和命名連接,也可以通過(guò)該單例獲得數(shù)據(jù)庫(kù)操作對(duì)象IDb-Operation,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的讀寫(xiě)操作,IDbOperation接口抽象出了相關(guān)數(shù)據(jù)庫(kù)操作方法,包括執(zhí)行SQL查詢語(yǔ)句、執(zhí)行數(shù)據(jù)庫(kù)事務(wù)、執(zhí)行存儲(chǔ)過(guò)程等。針對(duì)CityMaker的兩種數(shù)據(jù)庫(kù)類(lèi)型,實(shí)現(xiàn)這兩個(gè)接口,得到了面向具體數(shù)據(jù)庫(kù)類(lèi)型的實(shí)例化類(lèi):數(shù)據(jù)庫(kù)連接工廠類(lèi)FirebirdDb-ConnFactory和MySQLDbConnFactory,數(shù)據(jù)庫(kù)操作類(lèi)FirebirdDbOperation和MySQLDbOperation。
4.2 屬性信息擴(kuò)展
在實(shí)際應(yīng)用中,三維模型不僅僅是為了滿足三維可視化展現(xiàn)效果,更多的是對(duì)現(xiàn)實(shí)世界實(shí)體的信息化表達(dá),在描述實(shí)體的空間位置和幾何形狀外,還需要具備描述現(xiàn)實(shí)世界實(shí)體的社會(huì)、經(jīng)濟(jì)、文化等各類(lèi)屬性信息的能力。屬性信息擴(kuò)展[8]的目的就是為了彌補(bǔ)City-Maker中三維數(shù)據(jù)模型缺少屬性信息描述能力的缺陷。
基于CityMaker的三維模型實(shí)體的屬性信息擴(kuò)展方法是,根據(jù)三維模型實(shí)體的唯一編碼鏈接外部屬性表,實(shí)現(xiàn)三維模型數(shù)據(jù)屬性擴(kuò)展。三維模型實(shí)體的唯一編碼選擇BIN_SCENE_ENTITY表的MODLENAME字段,而非GUID字段,是因?yàn)镚UID字段雖然具有唯一性,但是由系統(tǒng)自動(dòng)生成,沒(méi)有任何意義,當(dāng)三維模型重新發(fā)布時(shí),該字段會(huì)改變,需要重新鏈接外部屬性表。而MODLENAME字段來(lái)源于三維模型數(shù)據(jù)對(duì)應(yīng)的外部模型文件名稱(chēng),當(dāng)模型文件名稱(chēng)定義為模型編碼時(shí),可確保MODLENAME的唯一性,并且重新發(fā)布時(shí),該字段不會(huì)改變。實(shí)現(xiàn)屬性擴(kuò)展的關(guān)鍵是新建一個(gè)匹配表,該匹配表的目的是記錄和維護(hù)三維實(shí)體與外部屬性之間的鏈接關(guān)系,該關(guān)系可以是一對(duì)一或一對(duì)多的關(guān)系,表示三維實(shí)體具有一個(gè)或多個(gè)屬性信息。匹配表的字段結(jié)構(gòu)如表1所示。

匹配表字段結(jié)構(gòu) 表1
通過(guò)這種數(shù)據(jù)庫(kù)擴(kuò)展模式,可以在不改變?cè)蠧ity-Maker數(shù)據(jù)庫(kù)組織結(jié)構(gòu)的前提下,通過(guò)外部屬性表的掛接,使得三維場(chǎng)景中的三維模型具備自定義的屬性描述信息,外接屬性表可以是在三維數(shù)據(jù)庫(kù)中新建的屬性表,也可以是業(yè)務(wù)系統(tǒng)中的業(yè)務(wù)信息表。通過(guò)維護(hù)和管理匹配表和外部屬性表,可以實(shí)現(xiàn)CityMaker三維數(shù)據(jù)庫(kù)的屬性擴(kuò)展能力,打造真正意義上的三維地理信息系統(tǒng)。
屬性查詢和定位是GIS中最基礎(chǔ)和最重要的功能之一,在二維GIS中,借助成熟的空間數(shù)據(jù)引擎和強(qiáng)大的平臺(tái)API,該功能的實(shí)現(xiàn)較為簡(jiǎn)單。在基于City-Maker的三維GIS開(kāi)發(fā)中,這一功能需要借助本文的原理和方法來(lái)實(shí)現(xiàn),主要步驟包括:
(1)建立三維模型與屬性信息的匹配表
按照表1的數(shù)據(jù)結(jié)構(gòu),建立起三維模型實(shí)體與模型實(shí)體屬性信息的匹配關(guān)系。該匹配關(guān)系可以由人工來(lái)完成,也可以開(kāi)發(fā)自動(dòng)化匹配工具由程序來(lái)完成。匹配的方法可以借助空間位置關(guān)系,也可以借助編碼體系。
(2)屬性查詢
借助CityMaker SDK提供的鼠標(biāo)拾取方法,拾取三維場(chǎng)景中的三維模型,從返回值中得到該三維模型的ID,在表1中搜索對(duì)應(yīng)的屬性項(xiàng),通過(guò)外接屬性表名稱(chēng)和屬性項(xiàng)ID獲得屬性庫(kù)中的具體信息,反饋到客戶端。
(3)屬性定位
根據(jù)用戶輸入的屬性關(guān)鍵字,在屬性庫(kù)中搜索對(duì)應(yīng)的屬性項(xiàng),通過(guò)外接屬性表名稱(chēng)和屬性項(xiàng)ID在表1中得到對(duì)應(yīng)的三維模型ID,借助CityMaker SDK提供的定位方法,通過(guò)三維模型ID在三維場(chǎng)景中實(shí)現(xiàn)定位功能。

圖4 屬性查詢

圖5 屬性定位
圖4 、圖5展示了某三維地下管線地理信息系統(tǒng)中的屬性查詢與定位功能的實(shí)現(xiàn)效果。
與二維GIS平臺(tái)軟件類(lèi)似,CityMaker仍然采用的是關(guān)系型數(shù)據(jù)庫(kù)存儲(chǔ)和管理三維數(shù)據(jù),并且能夠描述三維場(chǎng)景的邏輯組織結(jié)構(gòu),但缺少二維GIS平臺(tái)軟件強(qiáng)大的屬性存儲(chǔ)和管理能力。在分析CityMaker數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)的基礎(chǔ)上,本文提出的數(shù)據(jù)庫(kù)擴(kuò)展方法,可以彌補(bǔ)CityMaker在屬性信息管理方面的不足,使得三維數(shù)據(jù)能夠同時(shí)具有空間幾何信息和語(yǔ)義信息。在實(shí)際應(yīng)用中,能夠解決諸如三維模型的屬性查詢和定位、三維模型實(shí)體與GIS屬性匹配等圖屬一體化問(wèn)題。
[1] 朱慶,林琿.數(shù)碼城市地理信息系統(tǒng)——虛擬城市環(huán)境中的三維城市模型初探[M].武漢:武漢大學(xué)出版社,2004.
[2] 朱慶.三維地理信息系統(tǒng)技術(shù)綜述[J].地理信息世界,2004,2(3).
[3] 劉剛,吳沖龍,何珍文等.地上下一體化的三維空間數(shù)據(jù)庫(kù)模型設(shè)計(jì)與應(yīng)用[J].地球科學(xué)(中國(guó)地質(zhì)大學(xué)學(xué)報(bào)),2011,36(02).
[4] 李道遠(yuǎn),李英成,肖金城.大范圍城市三維模型管理技術(shù)研究[J].測(cè)繪科學(xué),2011,36(5).
[5] 朱國(guó)敏,馬照亭,孫隆祥等.城市三維地理信息系統(tǒng)中海量數(shù)據(jù)的數(shù)據(jù)庫(kù)組織與管理[J].測(cè)繪科學(xué),2008,33(1).
[6] 北京偉景行數(shù)字城市科技有限公司.CityMaker 6產(chǎn)品介紹[R].2011.
[7] 劉娟.基于CityMaker SDK的3D GIS開(kāi)發(fā)方法[J].城市勘測(cè),2011(5).
[8] 王郁昕,李紅豫,徐影.GIS中屬性信息的擴(kuò)展[J].北京聯(lián)合大學(xué)學(xué)報(bào)·自然科學(xué)版,2009,23(1).
3D Scene Data Organization M ethod and Application Extension in CityM aker
Ji Yanzhong,Li Hao
(Harbin Institute of Geotechnical Investigation and Surveying,Harbin 150010,China)
CityMaker is one of the outstanding domestic 3D GIS platform software.The paper introduced the City-Maker platform of 3D scene in three types of data:three-dimensional scene data,vector data and topographic data,focused on the analysis of the 3Dmodel data organization and storage structure,put forward two database extensionmethods for CityMaker:visit interface extension and attribute information propagation for the CityMaker in the attribute information management deficiencies.
citymaker;3D model;data organization;extended attributes
1672-8262(2013)03-62-04
P208.1
B
2012—07—23
紀(jì)彥忠(1955—),男,高級(jí)工程師,主要從事測(cè)繪生產(chǎn)管理工作。