程延锋,王俊江,曹红艳,王艳侠(中国电波传播研究所,山东青岛266107)
基于marble的三维可视化技术研究
程延锋,王俊江,曹红艳,王艳侠
(中国电波传播研究所,山东青岛266107)
随着三维可视化技术的高速发展和广泛应用,很多应用工程领域需要三维地理信息系统显示空间数据。据此介绍了marb1e的特点和应用方式,详细论述使用VS2008和Qt构建marb1e源码的基本过程。应用实例表明,基于marb1e的空间数据三维图形显示真实、形象、直观。
三维可视化;marb1e;Qt;VS2008
随着计算机技术和图形技术的进步,三维可视化技术得到了迅速的发展,并广泛应用到了军事、地理和矿产等诸多领域[1-6]。为了对空间数据进行可视化应用研究,相对于虚拟的二维地球平面载体,虚拟的三维地球模型作为载体更具有直观性和真实性,所以选择三维地球模型作为载体。考虑如果从底层开始建立比较实用的三维地球模型,则需要大量的人力在很好的硬件环境下花费大量的时间和精力才可完成开发工作,但是所做出的效果也不一定比目前流行的软件好。比如谷歌的Goog1e Earth[5]就是一个典型的代表。然而,Guog1e Earth也有自身问题,如存在三维数据的数据量巨大、代码数量大、操作繁琐、浏览速度慢及难以脱离专业软件环境等缺点,而GNU下的marb1e[8]为解决这一问题提供了一个有效的途径。
marb1e是一个地理地图集和虚拟桌面地球仪,具有一套完整的地理位置信息,可以使用marb1e查找地点,轻松地创建地图、测量距离以及检索与位置相关细节。marb1e带有一个小型数据库,如果可以连接互联网,marb1e可以连接到流行的互联网百科全书“维基百科”。marb1e提供了多种不同的视图,可以在线浏览地球上的地图区域,也可以把地图区域下载下来,然后离线使用。marb1e的所有特性都是由1ibMarb1e库所提供的。1ibMarb1e是基于Qt框架所建立的库,Qt是一个多平台的C++图形用户界面应用程序框架,它为程序员开发多平台应用程序提供了方便[9]。marb1e还有三个非常突出的优点:
(1)marb1e是一个跨平台的开源软件,支持的操作系统包括Linux、W indows、Mac OS X和MeeGo Qt/C++;
(2)由于1ibMarb1e是基于模块和插件的,可根据需要在marb1e中嵌入自己所编写的插件;
(3)可以对由Keyho1e标记语言(Keyho1e MarkuP Language,KML)所编写的文件进行解释,把文件中所描述和保存的地理信息如点、线、面和3D模型展现出来。
2.1 m arb le应用方式
基于marb1e自身的特点,有两种方式可以对空间数据进行可视化应用研究。
(1)在marb1e中,根据需要可以编写特定功能的插件,将对空间数据可视化的功能作为一个独立的插件嵌入到marb1e中;
(2)通过编译源代码,生成对应的动态库,在动态库的基础上建立一个独立的程序实现对空间数据可视化的应用研究。
本文采用第二种方法实现对空间数据可视化的应用研究,其主要包括以下两个方面。
(1)下载marb1e的源代码,然后通过cmake、Qt4和VS2008进行编译和建立相应的动态库marb1ewidgetd.d11,在建立的程序中,调用动态库marb1ewidgetd.d11提供的Marb1eWidget和zoomView等API生成虚拟三维地球模型。
(2)marb1e分层进行显示,可通过生成不同的层,显示对应的不同场景,继承LayerInterface类,在层上实现三维图形的显示、旋转、平移、缩放和漫游等功能。
2.2 m arb le源码构建
以下是编译marb1e的具体步骤,操作系统采用W indows。
(1)安装所需要的软件以及配置相关环境
①安装VS2008;
②安装Qt,同时把安装路径加入到系统的环境变量中;
③安装Qt-VS-addin;④安装cmake;
⑤下载marb1e源代码。
(2)cmake marb1e源代码,在cmake gui配置文件中,输入marb1e源代码的位置和marb1e源代码的构建位置。
(3)在cmake中点击“configure”按钮,选择Visua1Studio 9 2008。
(4)点击“Generate”生成marb1e对应的工程。
(5)用VS2008打开上步生成的marb1e工程,进行构建。
(6)构建完成后,进行安装,从而将库和可执行文件默认安装在C:Program Fi1esmarb1e。
此时,可以采用调用其生成的动态库marb1ewidgetd. d11和静态库marb1ewidgetd.1ib进行三维可视化的应用。
下面通过绘制地域网格实例说明基于marb1e的应用开发方法及其三维效果。以三维图形组件库为基础,子类化marb1e的Marb1eW idget类,实现了三维可视化窗体空间,该控件可以插入到其他Qt窗体控件中,通过Qt中信号和槽的消息通信机制实现三维的显示和交互,具体步骤如下。
(1)marb1ewidgetd.d11、marb1ewidgetd.1ib和相关数据文件放到绘制地域网格工程目录之下;
(2)在定义Marb1eWidget类的对象的头文件中,加入如下代码:
//定义Marb1eWidget类的头文件
#inc1ude
//定义继承LayerInterface类的头文件
#inc1ude"reg1ayer.h"
using namesPace Marb1e;
Marb1eW idget* m_PWgt;
reg1ayer* m_PLayer;
(3)在定义Marb1eW idget类的源文件中,主要加入如下代码:
//申请marb1e对象
m_PWgt=newMarb1eW idget(this);
m_PWgt->setGeometry(QRect(0,0,500,500));
//加入主题地图纹理
m_PWgt->setMaPThemeId("earth/srtm.dgm1")
//marb1e初始大小
m_PWgt->zoomView(1500);
……
//申请对应的图层
m_PLayer=new QregLayer(m_PWgt);
//图层加入marb1e
m_PWgt->maP()->addLayer(m_PLayer);
(4)在定义的reg1ayer层中,render()是主要的绘制地域网格等图形三维显示的函数;以经度50°、纬度10°为中心,6°一个方位(60个方位),400 km一个距离段(10个距离段),绘制一个圆形的地域网格,其效果图如图1所示。
图1 基于marb1e的地域网格
本文进行了基于marb1e的三维可视化研究,包括marb1e的编译、安装以及如何应用;基于marb1e的空间数据显示真实、形象、直观,三维可视化效果好。基于marb1e的三维显示已应用在很多实际项目中,解决了很多实际问题,具有很好的实用与经济价值。
[1]杨富民,万刚,李锋.复杂战场电磁态势三维可视化研究[J].测绘工程,2012,21(2):35-38.
[2]潘立武.基于地理信息系统技术的溃坝洪水三维可视化研究[J].北京联合大学学报,2013,27(4):19-23.
[3]宋洁华,郝君,赵志忠,等.基于ArcGIS Engine的三维地理信息软件设计与应用[J].海南师范大学学报(自然科学版),2009,22(3):326-330.
[4]申皓,刘青昆,龚蔚青.基于OSG的油藏三维可视化系统研究[J].微型机与应用,2014,23(8):32-34.
[5]史晓亮.基于Goog1e Earth的潘家窑工区煤田三维地震勘探的技术应用[J].工程地理物理学报,2014,11(4):457-461.
[6]刘家学,邓飞.基于OSG的飞机3D维修多场景动态调度方法[J].电子技术应用,2014,40(2):118-121.[7]张洋弘,孙歧峰,邵尉,等.基于Web的三维实时井眼轨迹可视化方法研究与实现[J].微型机与应用,2015,34(16):74-76.
[8]The Marb1e Project.The Marb1e Handbook[EB/OL].(2013-12-12)[2016-01-05]httPs://docs.kde.org/trunk5 /en/kdeedu/marb1e/index.htm1.
[9]中国软件技术有限公司.Qt程序设计[M].北京:清华大学出版社,2002.
程延锋(1981 -),通信作者,男,硕士,工程师,主要研究方向:电波传播、数值计算和软件开发等。E-mai1:cyfg1@163. com。
王俊江(1978 -),男,硕士,高级工程师,主要研究方向:电波传播、数值计算和软件开发等。
曹红艳(1977 -),女,硕士,高级工程师,主要研究方向:亚太地区频率场强预报算法研究及数值计算等。
Research on 3D visua1ization techno1ogy based on marb1e
Cheng Yanfeng,Wang Junjiang,Cao Hongyan,Wang Yanxia
(China Research Institute of Radio Wave ProPagation,Qingdao 266107,China)
W ith the raPid deve1oPment and wide aPP1ications of3D visua1ization techno1ogy,many aPP1ications in engineering fie1ds require 3D geograhic information system to show sPatia1 data.In this PaPer,the characteristics and aPP1ied way ofmarb1e are introduced,and the basic Process of bu1idingmarb1e code by VS2008 and Qt is discused in detai1.APP1ication examP1es show that sPatia1data 3D graPhic disP1ay based on marb1e is true,vivid and visua1.
3D visua1ization;marb1e;Qt;VS2008
TN391
A
10.19358 /j.issn.1674-7720.2016.09.006
程延锋,王俊江,曹红艳,等.基于marb1e的三维可视化技术研究[J].微型机与应用,2016,35(9):18-19,23.
2016-01-05)