《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 基于marble的三維可視化技術(shù)研究
基于marble的三維可視化技術(shù)研究
2016年微型機(jī)與應(yīng)用第09期
程延鋒,王俊江,,曹紅艷,,王艷俠
(中國(guó)電波傳播研究所,山東 青島 266107)
摘要: 隨著三維可視化技術(shù)的高速發(fā)展和廣泛應(yīng)用,,很多應(yīng)用工程領(lǐng)域需要三維地理信息系統(tǒng)顯示空間數(shù)據(jù),。據(jù)此介紹了marble的特點(diǎn)和應(yīng)用方式,詳細(xì)論述使用VS2008和Qt構(gòu)建marble源碼的基本過程,。應(yīng)用實(shí)例表明,,基于marble的空間數(shù)據(jù)三維圖形顯示真實(shí)、形象,、直觀,。
關(guān)鍵詞: 三維可視化 marble QT VS2008
Abstract:
Key words :

  程延鋒,王俊江,,曹紅艷,,王艷俠

  (中國(guó)電波傳播研究所,,山東 青島 266107)

  摘要:隨著三維可視化技術(shù)的高速發(fā)展和廣泛應(yīng)用,,很多應(yīng)用工程領(lǐng)域需要三維地理信息系統(tǒng)顯示空間數(shù)據(jù),。據(jù)此介紹了marble的特點(diǎn)和應(yīng)用方式,詳細(xì)論述使用VS2008Qt構(gòu)建marble源碼的基本過程,。應(yīng)用實(shí)例表明,,基于marble的空間數(shù)據(jù)三維圖形顯示真實(shí)、形象,、直觀,。

  關(guān)鍵詞:三維可視化;marble,;Qt,;VS2008

0引言

  隨著計(jì)算機(jī)技術(shù)和圖形技術(shù)的進(jìn)步,三維可視化技術(shù)得到了迅速的發(fā)展,,并廣泛應(yīng)用到了軍事,、地理和礦產(chǎn)等諸多領(lǐng)域[16]。為了對(duì)空間數(shù)據(jù)進(jìn)行可視化應(yīng)用研究,,相對(duì)于虛擬的二維地球平面載體,,虛擬的三維地球模型作為載體更具有直觀性和真實(shí)性,所以選擇三維地球模型作為載體,??紤]如果從底層開始建立比較實(shí)用的三維地球模型,則需要大量的人力在很好的硬件環(huán)境下花費(fèi)大量的時(shí)間和精力才可完成開發(fā)工作,,但是所做出的效果也不一定比目前流行的軟件好,。比如谷歌的Google Earth[5]就是一個(gè)典型的代表。然而,,Guogle Earth也有自身問題,,如存在三維數(shù)據(jù)的數(shù)據(jù)量巨大、代碼數(shù)量大,、操作繁瑣,、瀏覽速度慢及難以脫離專業(yè)軟件環(huán)境等缺點(diǎn),而GNU下的marble[8]為解決這一問題提供了一個(gè)有效的途徑,。

1marble簡(jiǎn)介和特點(diǎn)

  marble是一個(gè)地理地圖集和虛擬桌面地球儀,,具有一套完整的地理位置信息,可以使用marble查找地點(diǎn),,輕松地創(chuàng)建地圖,、測(cè)量距離以及檢索與位置相關(guān)細(xì)節(jié)。marble帶有一個(gè)小型數(shù)據(jù)庫(kù),,如果可以連接互聯(lián)網(wǎng),,marble可以連接到流行的互聯(lián)網(wǎng)百科全書“維基百科”。marble提供了多種不同的視圖,,可以在線瀏覽地球上的地圖區(qū)域,,也可以把地圖區(qū)域下載下來(lái),,然后離線使用。marble的所有特性都是由libMarble庫(kù)所提供的,。libMarble是基于Qt框架所建立的庫(kù),,Qt是一個(gè)多平臺(tái)的C++圖形用戶界面應(yīng)用程序框架,它為程序員開發(fā)多平臺(tái)應(yīng)用程序提供了方便[9],。marble還有三個(gè)非常突出的優(yōu)點(diǎn):

  (1)marble是一個(gè)跨平臺(tái)的開源軟件,,支持的操作系統(tǒng)包括Linux、Windows,、Mac OS X和MeeGo Qt/C++,;

  (2)由于libMarble是基于模塊和插件的,可根據(jù)需要在marble中嵌入自己所編寫的插件,;

  (3)可以對(duì)由Keyhole標(biāo)記語(yǔ)言(Keyhole Markup Language, KML)所編寫的文件進(jìn)行解釋,,把文件中所描述和保存的地理信息如點(diǎn)、線,、面和3D模型展現(xiàn)出來(lái),。

2marble應(yīng)用方式和源碼構(gòu)建

  2.1marble應(yīng)用方式

  基于marble自身的特點(diǎn),,有兩種方式可以對(duì)空間數(shù)據(jù)進(jìn)行可視化應(yīng)用研究,。

  (1) 在marble中,根據(jù)需要可以編寫特定功能的插件,,將對(duì)空間數(shù)據(jù)可視化的功能作為一個(gè)獨(dú)立的插件嵌入到marble中,;

  (2) 通過編譯源代碼,生成對(duì)應(yīng)的動(dòng)態(tài)庫(kù),,在動(dòng)態(tài)庫(kù)的基礎(chǔ)上建立一個(gè)獨(dú)立的程序?qū)崿F(xiàn)對(duì)空間數(shù)據(jù)可視化的應(yīng)用研究,。

  本文采用第二種方法實(shí)現(xiàn)對(duì)空間數(shù)據(jù)可視化的應(yīng)用研究,其主要包括以下兩個(gè)方面,。

  (1) 下載marble的源代碼,,然后通過cmake、Qt4和VS2008進(jìn)行編譯和建立相應(yīng)的動(dòng)態(tài)庫(kù)marblewidgetd.dll,,在建立的程序中,,調(diào)用動(dòng)態(tài)庫(kù)marblewidgetd.dll提供的MarbleWidget和zoomView等API生成虛擬三維地球模型。

  (2) marble分層進(jìn)行顯示,,可通過生成不同的層,,顯示對(duì)應(yīng)的不同場(chǎng)景,繼承LayerInterface類,,在層上實(shí)現(xiàn)三維圖形的顯示,、旋轉(zhuǎn)、平移,、縮放和漫游等功能,。

  2.2marble源碼構(gòu)建

  以下是編譯marble的具體步驟,,操作系統(tǒng)采用Windows。

  (1)安裝所需要的軟件以及配置相關(guān)環(huán)境

 ?、侔惭bVS2008,;

  ②安裝Qt,,同時(shí)把安裝路徑加入到系統(tǒng)的環(huán)境變量中,;

  ③安裝QtVSaddin,;

 ?、馨惭bcmake;

 ?、菹螺dmarble源代碼,。

  (2)cmake marble源代碼,在cmake gui配置文件中,,輸入marble源代碼的位置和marble源代碼的構(gòu)建位置,。

  (3)在cmake中點(diǎn)擊“configure”按鈕,選擇Visual Studio 9 2008,。

  (4)點(diǎn)擊“Generate”生成marble對(duì)應(yīng)的工程,。

  (5)用VS2008打開上步生成的marble工程,進(jìn)行構(gòu)建,。

  (6)構(gòu)建完成后,,進(jìn)行安裝,從而將庫(kù)和可執(zhí)行文件默認(rèn)安裝在C:\\Program Files\\marble,。

  此時(shí),,可以采用調(diào)用其生成的動(dòng)態(tài)庫(kù)marblewidgetd.dll和靜態(tài)庫(kù)marblewidgetd.lib進(jìn)行三維可視化的應(yīng)用。

3應(yīng)用實(shí)例

  下面通過繪制地域網(wǎng)格實(shí)例說明基于marble的應(yīng)用開發(fā)方法及其三維效果,。以三維圖形組件庫(kù)為基礎(chǔ),,子類化marble的MarbleWidget類,實(shí)現(xiàn)了三維可視化窗體空間,,該控件可以插入到其他Qt窗體控件中,,通過Qt中信號(hào)和槽的消息通信機(jī)制實(shí)現(xiàn)三維的顯示和交互,具體步驟如下,。

  (1) marblewidgetd.dll,、marblewidgetd.lib和相關(guān)數(shù)據(jù)文件放到繪制地域網(wǎng)格工程目錄之下;

  (2) 在定義MarbleWidget類的對(duì)象的頭文件中,,加入如下代碼:

  //定義MarbleWidget類的頭文件

  #include <marble/MarbleWidget.h>

  //定義繼承LayerInterface類的頭文件

  #include "reglayer.h"

  using namespace Marble;

  MarbleWidget* m_pWgt;

  reglayer * m_pLayer;

  (3) 在定義MarbleWidget類的源文件中,,主要加入如下代碼:

  //申請(qǐng)marble對(duì)象

  m_pWgt = newMarbleWidget(this);

  m_pWgt->setGeometry(QRect(0,0,500,500));

  //加入主題地圖紋理

  m_pWgt->setMapThemeId("earth/srtm.dgml")

  //marble初始大小

  m_pWgt->zoomView(1500);

  ……

  //申請(qǐng)對(duì)應(yīng)的圖層

  m_pLayer = new QregLayer(m_pWgt);

  //圖層加入marble

  m_pWgt->map()->addLayer(m_pLayer);

  (4)在定義的reglayer層中,render()是主要的繪制地域網(wǎng)格等圖形三維顯示的函數(shù);以經(jīng)度50°,、緯度10°為圖1基于marble的地域網(wǎng)格中心,,6°一個(gè)方位(60個(gè)方位),400 km一個(gè)距離段(10個(gè)距離段),,繪制一個(gè)圓形的地域網(wǎng)格,,其效果圖如圖1所示。

001.jpg

4結(jié)論

  本文進(jìn)行了基于marble的三維可視化研究,,包括marble的編譯,、安裝以及如何應(yīng)用;基于marble的空間數(shù)據(jù)顯示真實(shí),、形象,、直觀,三維可視化效果好,?;趍arble的三維顯示已應(yīng)用在很多實(shí)際項(xiàng)目中,解決了很多實(shí)際問題,,具有很好的實(shí)用與經(jīng)濟(jì)價(jià)值,。

參考文獻(xiàn)

  [1] 楊富民,,萬(wàn)剛,,李鋒.復(fù)雜戰(zhàn)場(chǎng)電磁態(tài)勢(shì)三維可視化研究[J].測(cè)繪工程,2012, 21(2): 3538.

 ?。?] 潘立武.基于地理信息系統(tǒng)技術(shù)的潰壩洪水三維可視化研究[J].北京聯(lián)合大學(xué)學(xué)報(bào),,2013, 27(4): 1923.

 ?。?] 宋潔華,,郝君,趙志忠,,等.基于ArcGIS Engine的三維地理信息軟件設(shè)計(jì)與應(yīng)用[J].海南師范大學(xué)學(xué)報(bào)(自然科學(xué)版),, 2009, 22(3): 326330.

  [4] 申皓,,劉青昆,,龔蔚青.基于OSG的油藏三維可視化系統(tǒng)研究[J].微型機(jī)與應(yīng)用,2014, 23(8) : 3234.

 ?。?] 史曉亮.基于Google Earth的潘家窯工區(qū)煤田三維地震勘探的技術(shù)應(yīng)用[J].工程地理物理學(xué)報(bào),,2014, 11(4): 457461.

  [6] 劉家學(xué),,鄧飛.基于OSG的飛機(jī)3D維修多場(chǎng)景動(dòng)態(tài)調(diào)度方法[J].電子技術(shù)應(yīng)用,,2014, 40(2):118121.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。