亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于CityMaker SDK的3D GIS開發(fā)方法

        2011-04-18 06:53:36劉娟
        城市勘測 2011年5期
        關(guān)鍵詞:數(shù)據(jù)服務(wù)控件圖層

        劉娟

        (哈爾濱市勘察測繪研究院,黑龍江哈爾濱 150010)

        基于CityMaker SDK的3D GIS開發(fā)方法

        劉娟?

        (哈爾濱市勘察測繪研究院,黑龍江哈爾濱 150010)

        CityMaker是一款優(yōu)秀的國產(chǎn)3D GIS平臺軟件。本文介紹了其4個主要產(chǎn)品類型,分析了CityMaker平臺的三維數(shù)據(jù)組織以及二次開發(fā)接口,提出了基于CityMaker SDK的3D GIS開發(fā)的4個步驟:初始化三維地球控件、加載三維場景數(shù)據(jù)獲取三維場景實(shí)體處理業(yè)務(wù)邏輯。并詳細(xì)介紹了以此為基礎(chǔ)開發(fā)的一個三維地下管線系統(tǒng)實(shí)例,為3D GIS的開發(fā)提供了可行的解決方案。

        CityMaker SDK;3D GIS;三維場景;系統(tǒng)開發(fā);地下管線

        1 引 言

        三維數(shù)字城市建設(shè)近幾年來在我國方興未艾,各大中型城市都基于三維可視化技術(shù)建設(shè)了自己的三維虛擬城市和系統(tǒng)。從應(yīng)用成果來看,大部分三維虛擬城市系統(tǒng)建設(shè)偏重于場景建模,即城市三維數(shù)據(jù)采集、模型生產(chǎn)和場景搭建,而對場景驅(qū)動,即基于三維場景的業(yè)務(wù)系統(tǒng)開發(fā)和應(yīng)用則關(guān)注不多,在一定程度上影響了三維數(shù)字城市建設(shè)水平和應(yīng)用效果。本文以CityMaker三維平臺為例,分析了該平臺的三維數(shù)據(jù)組織以及二次開發(fā)接口,并詳細(xì)介紹了以此為基礎(chǔ)開發(fā)的一個三維地下管線系統(tǒng),為3D GIS的開發(fā)提供了可行的解決方案。

        2 CityMaker產(chǎn)品體系

        CityMaker系列產(chǎn)品是北京偉景行數(shù)字城市科技有限公司研發(fā)的,擁有完全自主知識版權(quán),且核心技術(shù)處于國際領(lǐng)先水平的3D GIS平臺軟件。CityMaker系列軟件致力于全空間的、逼真、完美的虛擬三維可視化,將二維信息融入三維場景中,并將傳統(tǒng)的二維分析運(yùn)算擴(kuò)展成三維分析運(yùn)算,實(shí)現(xiàn)可視化、分析功能的二三維一體化。

        CityMaker系列產(chǎn)品覆蓋了三維數(shù)據(jù)生產(chǎn)、管理、應(yīng)用開發(fā)整個過程,具體包括城市級海量3D GIS數(shù)據(jù)生產(chǎn)與維護(hù)平臺CityMaker Builder、企業(yè)級的3D GIS服務(wù)聚合與發(fā)布平臺CityMaker Server、通用的3D GIS應(yīng)用平臺CityMaker Explore以及3D GIS二次開發(fā)組件庫CityMaker SDK。

        3 CityMaker SDK開發(fā)方法

        3.1 三維場景數(shù)據(jù)內(nèi)容

        CityMaker平臺中,構(gòu)成三維場景的數(shù)據(jù)內(nèi)容主要包括如下幾個部分:

        (1)三維模型數(shù)據(jù)

        三維模型數(shù)據(jù)用以表達(dá)現(xiàn)實(shí)世界中的離散分布的三維實(shí)體,是構(gòu)成三維場景的最重要組成部分。在City-Maker中,三維模型數(shù)據(jù)采用面片模型表達(dá)三維實(shí)體,即用不同形狀的面片近似表示三維實(shí)體的表面,優(yōu)點(diǎn)是便于顯示和更新。三維模型數(shù)據(jù)可從外部文件導(dǎo)入,如?.3ds,?.osg等,也可以在CityMaker Builder中創(chuàng)建。

        三維模型數(shù)據(jù)在邏輯上是以場景組的形式組織的,即將同一種類別的三維模型組織在一個圖層中,將相似類別圖層再組織成場景組,多個場景組還可以組成一個大的場景組。呈現(xiàn)一個樹型的組織方式。

        三維模型組成的場景以本地文件的形式保存(?.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ù)庫加載(如ArcSDE Database)以及符合OGC規(guī)范的數(shù)據(jù)服務(wù)(如WFS)。這些數(shù)據(jù)能夠直接被平臺識別和解析、并能加載到三維場景中。

        (3)地形數(shù)據(jù)

        地形數(shù)據(jù)可由平臺提供的CityMaker TerrainPush工具,可以將影像(DOM)及高程(DEM)數(shù)據(jù)發(fā)布成文件數(shù)據(jù)(?.ted),或者發(fā)布到MySQL、Oracle數(shù)據(jù)庫中,形成平臺能夠讀取的地形數(shù)據(jù)。

        3.2 組件庫介紹

        CityMaker SDK是采用組件技術(shù)封裝的二次開發(fā)接口,提供COM控件、JS類庫兩種版本,支持VB、VC++、Microsoft Visual Studio以及Delphi等開發(fā)環(huán)境。組件庫中提供的所有功能都封裝為接口,這些接口可以劃分為兩類:

        (1)IObject Interface

        該類接口繼承于IObject的各個接口。這些接口無法直接實(shí)例化,只能通過IObjectManager的CreateXXX()方法返回得到,具體可以劃分為4個層次,如圖1所示。

        圖1 接口層次圖

        IObject Interface類型的接口是二次開發(fā)接口中最核心的部分,它們是三維場景中各個可視對象的抽象表達(dá)。通過這些接口,我們可以獲取和設(shè)置三維場景中的對象,實(shí)現(xiàn)三維場景操作。

        (2)CoClass Interface

        該類接口主要封裝了三維地球控件操作、服務(wù)注冊、幾何形體創(chuàng)建、三維分析等接口,輔助三維程序開發(fā)。

        3.3 開發(fā)方法

        基于CityMaker SDK的3D GIS開發(fā)方法一般遵循以下4步:

        (1)初始化三維地球控件

        初始化三維地球控件的目的是為了讓客戶端具有使用權(quán)限,且能夠調(diào)用控件提供的接口。初始化三維地球控件的方法是使用IConfig接口的Initialize方法,示例代碼如下:

        (2)加載三維場景數(shù)據(jù)

        三維場景數(shù)據(jù)為3.1節(jié)介紹的3種類型的數(shù)據(jù)。加載三維場景數(shù)據(jù)到三維地球控件主要有兩種方法。

        第一種方法是加載工程文件(?.cep)。該文件實(shí)際上是一個配置文件,記錄了一個三維場景中的加載的各種三維場景數(shù)據(jù)層及屬性、特定場景、動畫導(dǎo)航等。加載工程文件的方法是使用IConfig接口的Load方法,示例代碼如下:

        _dct3DWindow.config.Load(fileName,psd,asynchronous);

        其中Load方法的第1個參數(shù)fileName表示工程文件的路徑,第2個參數(shù)psd表示工程文件的密碼,第3個參數(shù)asynchronous表示是否異步加載。

        第二種方法是直接加載3.1節(jié)中的各種數(shù)據(jù)層。

        ①加載三維模型圖層

        加載三維模型圖層的方法是使用IInfomationTree接口的CreateSceneLayer方法,可以從服務(wù)器上加載發(fā)布的三維模型圖層數(shù)據(jù)服務(wù),也可以從本地加載場景大文件。目前支持的場景圖層數(shù)據(jù)格式為?.scd、?. sdb,示例代碼如下:

        參數(shù)sceneLayerName表示自定義的圖層名稱。參數(shù)password表示圖層密碼。參數(shù)layerInfo表示圖層數(shù)據(jù)源。參數(shù)parentGroupID表示組容器ID,也即要創(chuàng)建到哪個組下面。

        當(dāng)加載成功后,三維地球控件會自動繪制該圖層中的數(shù)據(jù),并返回一個ISceneLayer類型的對象,通過該對象的屬性和方法,可以獲取三維模型圖層的內(nèi)部組織結(jié)構(gòu)。

        ②加載矢量圖層

        加載矢量圖層的方法是使用IInfomationTree接口的CreateFeatureLayer方法,可以從服務(wù)器上加載發(fā)布的矢量圖層數(shù)據(jù)服務(wù),也可以從本地加載Shapefile文件,示例代碼如下:

        參數(shù)featureLayerName表示自定義的圖層名稱。參數(shù)password表示圖層密碼。參數(shù)layerInfo表示圖層數(shù)據(jù)源。參數(shù)parentGroupID表示組容器ID,也即要創(chuàng)建到哪個組下面。

        當(dāng)加載成功后,三維地球控件會自動繪制該圖層中的數(shù)據(jù),并返回一個IFeatureLayer類型的對象,通過該對象的屬性和方法,可以獲取和設(shè)置矢量圖層的屬性。

        ③加載地形圖層

        加載矢量圖層的方法是使用IConfig接口的Load方法,可以從服務(wù)器上加載發(fā)布的地形數(shù)據(jù)服務(wù),也可以從本地加載地形文件(?.ted),示例代碼如下:

        參數(shù)terrainInfo表示地形圖層數(shù)據(jù)源,如果加載的是服務(wù)器數(shù)據(jù)服務(wù),該參數(shù)形如@"hrb@192.168.2. 53",其中hrb表示數(shù)據(jù)服務(wù)名稱,192.168.2.53是服務(wù)器地址。如果加載的是本地地形文件,該參數(shù)形如@" F:\樣例數(shù)據(jù)\地形數(shù)據(jù)\hrb.ted"。參數(shù)asyn表示是否采用異步加載。

        當(dāng)加載成功后,三維地球控件會自動繪制該圖層中的數(shù)據(jù)??梢酝ㄟ^ITerrain接口對地形數(shù)據(jù)進(jìn)行操作。

        (3)三維場景實(shí)體獲取

        根據(jù)業(yè)務(wù)邏輯,獲取三維場景中的實(shí)體,是3D GIS中的核心,如通過鼠標(biāo)在三維場景中拾取地物,通過屬性在三維場景中定位指定的地物等。在CityMaker SDK中,通過鼠標(biāo)在三維場景中拾取地物的方法是使用IRender接口的ScreenToWorld方法,示例代碼如下:

        該方法中,前2個參數(shù)x、y表示屏幕坐標(biāo),也就是鼠標(biāo)點(diǎn)擊處的坐標(biāo)。參數(shù)infoTree.rootId表示參與拾取的群組,也即從場景樹的哪個層次來遍歷三維實(shí)體,一般是從根節(jié)點(diǎn)處。參數(shù)type表示參與拾取的對象類型,這是一個枚舉值。

        參數(shù)dx、dy、dz表示拾取到地物時,鼠標(biāo)點(diǎn)擊位置的東西向坐標(biāo)、南北向坐標(biāo)以及高度值。參數(shù)object-GUID表示拾取到的地物的唯一ID值。以這個ID值為參數(shù),通過IObjectManager接口的GetObject方法,可以獲取這個地物的實(shí)例對象IObject。通過接口查詢,可以獲取這個對象的具體類型,如拾取的對象是三維實(shí)體,則通過IEntity ent=obj as IEntity語句,將IObject類型的對象轉(zhuǎn)換為IEntity類型的對象,并通過IEntity接口的屬性獲取該三維實(shí)體的詳細(xì)信息。

        如果知道了某個三維場景中地物的ID值,則無需鼠標(biāo)拾取,直接使用IObjectManager接口的GetObject方法獲取對象。

        (4)業(yè)務(wù)邏輯處理

        當(dāng)獲取了三維場景實(shí)體后,以這些三維場景實(shí)體為對象,根據(jù)我們的系統(tǒng)需求,進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理。如進(jìn)行信息查詢、統(tǒng)計(jì),空間分析等。業(yè)務(wù)邏輯處理可以借助SDK中提供的相關(guān)接口,如使用IVisualAnalysis接口進(jìn)行可視化分析,也可以自己編寫代碼處理。

        4 開發(fā)實(shí)例

        借助CityMaker SDK,筆者開發(fā)了三維地下管線系統(tǒng)。該系統(tǒng)以三維城市地上景觀模型為背景,疊加三維地下管線專題數(shù)據(jù),面向管線行業(yè)管理,開發(fā)了相應(yīng)的管理和分析功能,輔助管線管理部門的日常管理。該系統(tǒng)的功能結(jié)構(gòu)圖如圖2所示。

        圖2 功能結(jié)構(gòu)圖

        系統(tǒng)運(yùn)行效果圖如圖3所示。

        圖3 系統(tǒng)運(yùn)行效果圖

        5 結(jié) 語

        3D GIS是GIS發(fā)展的一個趨勢,利用CityMaker SDK能夠快速構(gòu)建三維可視化系統(tǒng)。但是,利用City-Maker SDK開發(fā)3D GIS仍然會遇到一些問題,如開發(fā)包封裝程度較高,無法從較低層次進(jìn)行開發(fā),空間分析功能較弱,對三維實(shí)體的屬性支持不夠等。這些問題的解決,一方面期待于CityMaker SDK的不斷完善,另一方面,也需要開發(fā)人員在系統(tǒng)開發(fā)過程中靈活解決。

        [1] 劉剛,吳沖龍;,何珍文等.地上下一體化的三維空間數(shù)據(jù)庫模型設(shè)計(jì)與應(yīng)用[J].地球科學(xué)(中國地質(zhì)大學(xué)學(xué)報(bào)),2011,36(2)

        [2] 王海鷹,張新長,康停軍等.基于CA模型的三維虛擬城市構(gòu)建方法研究[J].測繪學(xué)報(bào),2010(6)

        [3] 馮琰,郭容寰,汪旻琦.三維城市模型數(shù)據(jù)組織與管理方法研究[J].測繪科學(xué),2011(1)

        [4] 周松濤.基于關(guān)系數(shù)據(jù)庫的三維模型庫技術(shù)[J].測繪信息與工程,2005,30(6)

        [5] 張明,蘇中球.基于City Maker的城市三維建模技術(shù)的研究[J].城市勘測,2010(4)

        [6] 杜連艷,張瓊,金明一.三維仿真城市的建設(shè)方法[J].測繪與空間地理信息,2011(1)

        [7] 韓聰,荊玉平,劉建國.雕塑公園三維管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].城市勘測,2010(5)

        The Method of Developing 3D GIS Based on CityMaker SDK

        Liu Juan
        (Harbin Institute of Geotechnical Investigation and Surveying,Harbin 150010,China)

        CityMaker is a excellent 3D GIS Homemade Software.This paper introduces four kinds of the product,analyzes the organization of 3D data and SDK in CityMaker platform.It presents four steps to develop 3D GIS based on CityMaker SDK,which are initializing 3D earth control,loading 3D data,getting 3D entity and processing service logic. Then,it gives the detailed account of the 3D pipeline System,which provides a doable solution for developing 3D GIS.

        CityMaker SDK;3D GIS;3D Scene;sytem development;underground pipeline

        2011—05—17

        劉娟(1976—),女,工程師,主要從事空間數(shù)據(jù)庫建設(shè)、地理信息系統(tǒng)應(yīng)用工作。

        1672-8262(2011)05-55-03

        P208.2

        B

        猜你喜歡
        數(shù)據(jù)服務(wù)控件圖層
        地理空間大數(shù)據(jù)服務(wù)自然資源調(diào)查監(jiān)測的方向分析
        關(guān)于.net控件數(shù)組的探討
        軟件(2018年7期)2018-08-13 09:44:42
        巧用混合圖層 制作抽象動感森林
        如何運(yùn)用稅收大數(shù)據(jù)服務(wù)供給側(cè)結(jié)構(gòu)性改革
        中國商論(2016年34期)2017-01-15 14:24:18
        基于頻繁子圖挖掘的數(shù)據(jù)服務(wù)Mashup推薦
        圖層法在地理區(qū)域圖讀圖中的應(yīng)用
        淺析“遞層優(yōu)化法”在礦井制圖中的應(yīng)用
        河南科技(2014年6期)2014-04-04 08:00:42
        一種基于數(shù)據(jù)服務(wù)超鏈進(jìn)行情景數(shù)據(jù)集成的方法*
        Photoshop圖層的解讀
        就這樣玩會VBA中常見的自定義控件
        電腦迷(2012年24期)2012-04-29 00:44:03
        亚洲欧洲无码精品ⅤA| 人妻少妇精品视频无码专区| 国产成人av一区二区三区在线| 久久久久一| 97人妻精品一区二区三区免费| 视频精品熟女一区二区三区| 极品诱惑一区二区三区| 日本伦理视频一区二区| 久久久久亚洲av无码a片| 欧美一区二区三区激情| 伊人精品无码AV一区二区三区| 久久精品亚洲国产成人av| 亚洲av不卡免费在线| 超清精品丝袜国产自在线拍| 国产99在线视频| 亚洲国产av中文字幕| 色吧噜噜一区二区三区| 国产高清在线精品一区二区三区| 久久久久中文字幕无码少妇| 亚洲一区二区三区新视频| 亚洲av天堂免费在线观看| 少妇无码av无码专区线| 亚洲av无码专区在线亚| 国产激情视频在线观看首页| 国产亚洲精品久久久久久国模美| 国产成人无码免费看片软件| 国产精品无码不卡在线播放| 亚洲综合新区一区二区| 国产乱人无码伦av在线a| 日本高清aⅴ毛片免费| 国产伦久视频免费观看视频| 人妻无码一区二区在线影院 | 无码不卡免费一级毛片视频| 国产精品成年人毛片毛片| 免费观看a级毛片| 蜜臀av一区二区三区人妻在线| 中文字幕一区二区三区| 亚洲第一最快av网站| 日韩无码视频淫乱| 在线看片免费人成视久网不卡| 亚洲一区在线观看中文字幕|