劉洪雙
(河南省地圖院,河南 鄭州 450008)
基于osgEarth的本地化三維場(chǎng)景構(gòu)建和應(yīng)用
劉洪雙
(河南省地圖院,河南 鄭州 450008)
基于osgEarth開(kāi)源庫(kù),使用其自帶的dem高程數(shù)據(jù)和dom正射影像數(shù)據(jù)切片工具,對(duì)數(shù)據(jù)進(jìn)行金字塔切片,通過(guò)配置文件實(shí)現(xiàn)矢量數(shù)據(jù)、瓦片數(shù)據(jù)、三維模型的加載和顯示,快速構(gòu)建簡(jiǎn)單的三維場(chǎng)景。
osgEarth;天地圖;dem;dom;三維模型
openSceneGraph是一個(gè)開(kāi)源的三維引擎,被廣泛地應(yīng)用在可視化仿真、游戲、虛擬現(xiàn)實(shí)、科學(xué)計(jì)算、三維重建、地理信息、太空探索、石油礦產(chǎn)等領(lǐng)域。osg采用標(biāo)準(zhǔn)C++和OpenGL編寫(xiě)而成,可運(yùn)行在所有的Windows平臺(tái)、OSX、GNU/Linux、IRIX、Solaris、HP-Ux、AIX、Android和FreeBSD 操作系統(tǒng)。
osgEarth是基于三維引擎osg開(kāi)發(fā)的三維數(shù)字地球引擎庫(kù),在osg基礎(chǔ)上實(shí)現(xiàn)了瓦片調(diào)度插件,可選的四杈樹(shù)調(diào)度插件,更多的地理數(shù)據(jù)加載插件(包括GDAL、ogr、WMS、TMS、VPB、filesystem等),再結(jié)合一套地理投影轉(zhuǎn)換插件,這樣就能夠?qū)崿F(xiàn)高效處理加載調(diào)度地理數(shù)據(jù)在三維地球上的顯示,實(shí)現(xiàn)三維虛擬地球。
本文主要介紹利用osgEarth對(duì)本地三維數(shù)據(jù)的調(diào)用,包括對(duì)“天地圖”發(fā)布的WMTS服務(wù)的調(diào)用、本地矢量數(shù)據(jù)的調(diào)用、dem高程數(shù)據(jù)的金字塔切片和調(diào)用、dom影像數(shù)據(jù)的金字塔切片和調(diào)用、模型的制作和調(diào)用等技術(shù)。
“天地圖”提供了豐富的矢量數(shù)據(jù)、柵格數(shù)據(jù)服務(wù)接口,提供了覆蓋全球的地理信息數(shù)據(jù)。其中中國(guó)的數(shù)據(jù)覆蓋了從宏觀的中國(guó)全境到微觀的鄉(xiāng)鎮(zhèn)、村莊。因此,利用osgEarth調(diào)用天地圖提供的數(shù)據(jù),并跟本地?cái)?shù)據(jù)結(jié)合,實(shí)現(xiàn)快速建模,快速更新,快速發(fā)布,將有利于地方虛擬城市和三維地形的建設(shè)和發(fā)展,提供新型的地理信息服務(wù)模式。
可以從網(wǎng)上下載已經(jīng)編譯好的osgEarth程序包,也可以自己下載osgEarth源碼和所需要的插件庫(kù)和osgEarth使用的開(kāi)源庫(kù),利用CMake對(duì)源碼進(jìn)行編譯,生成dll文件和可執(zhí)行exe文件,在此不作詳細(xì)論述,下面著重講述調(diào)用方法。在下載的程序包目錄下新建六文件,其中三個(gè)批處理dat文件,三個(gè)earth配置文件。見(jiàn)圖1。
圖1 程序安裝目錄圖
tianditu.bat為批處理文件,內(nèi)容如下:
tianditu.earth 為osgEarth的配置文件。內(nèi)容如下:
配置完成后,雙擊 tianditu.bat,啟動(dòng)自帶的osgViewer程序并讀取tianditu.earth配置文件。
osgEarth通過(guò)配置文件tianditu.earth可以調(diào)用本地的dem數(shù)據(jù)。例如:把dem文件henan.tif拷貝到data文件夾下面,在配置文件中加入如下代碼,就可以實(shí)現(xiàn)對(duì)本地dem數(shù)據(jù)的加載和顯示。
由于dem數(shù)據(jù)文件較大,要加快瀏覽速度,或者直接在iis服務(wù)器中進(jìn)行發(fā)布是不合適的(例如:http://ip/data/henan.tif),可以采用金字塔切片的方法對(duì)dem數(shù)據(jù)進(jìn)行矢量瓦片化處理,即使用osgEarth自帶的osgearth_package工具,對(duì)dem數(shù)據(jù)進(jìn)行切片[2]。
在圖1中在dem.earth 文件添加如下代碼:
在dem.dat 執(zhí)行如下命令:
就會(huì)在 f: ms 文件夾下面生成一個(gè)henan文件夾,里面存儲(chǔ)dem金字塔切片文件。修改tianditu. earth文件中的配置信息:
也可以在iis中添加一個(gè)虛擬目錄
圖2 地形圖
osgEarth也可以通過(guò)tianditu.earth配置文件調(diào)用本地的衛(wèi)星影像數(shù)據(jù)。例如:把world.tif拷貝到data文件夾下面,在配置文件中加入如下代碼,就可以加載顯示本地的影像數(shù)據(jù)。
可以使用osgEarth自帶的工具,對(duì)dom影像數(shù)據(jù)進(jìn)行金字塔切片處理。
在圖1dom.earth文件中添加如下代碼:
在dom.dat 執(zhí)行如下命令:
就會(huì)在 f:dms 文件夾下面生成一個(gè)world文件夾,里面存儲(chǔ)dom影像金字塔切片文件。修改tianditu.earth文件中的配置信息:
也可以在iis中添加一個(gè)虛擬目錄
可以采用3Dmax制作3D模型。安裝3Dmax以后,再下載安裝osgexp插件,之后用3Dmax制作的三維模型就可以導(dǎo)出ive格式了。把制作的好的三維模型拷貝到data文件夾下面,在tianditu.earth配置文件中加入如下代碼,就可以實(shí)現(xiàn)模型的加載。
網(wǎng)絡(luò)發(fā)布模型方法跟前面介紹的相同,在iis下發(fā)布模型文件,例如:
http://ip/ data/oil.ive,就可以直接在線調(diào)用模型。
以上著重介紹了osgEarth實(shí)現(xiàn)本地化數(shù)據(jù)加載的方法,以及對(duì)dem和dom數(shù)據(jù)進(jìn)行金字塔切片并進(jìn)行網(wǎng)絡(luò)發(fā)布的方法, 其他的具體配置和使用,可以參照?qǐng)D1中tests文件夾下的配置例子。通過(guò)這些學(xué)習(xí),可以很快的利用osgEarth實(shí)現(xiàn)本地化三維場(chǎng)景的發(fā)布和構(gòu)建。
[1]吳曉雪, 任鴻翔, 張顯庫(kù),等. 基于osgEarth三維數(shù)字地球建設(shè)的研究[J]. 大眾科技, 2015(1):1-3.
[2]吳小東, 許捍衛(wèi). 基于OSGEarth的城市三維場(chǎng)景構(gòu)建[J]. 地理空間信息, 2013, 11(2):107-110.
劉洪雙 (1977― ),男,漢族,從事地圖測(cè)繪程序研發(fā)工作。E-mail:37735159@qq.com