Research on Isoline Display Based on Marble

Page 1

Transactions on Computer Science and Technology March 2016, Volume 5, Issue 1, PP.9-13

Research on Isoline Display Based on Marble Yanfeng Cheng, Yanbo Guo, Dongsheng Yang, LianYing Zhang, Yue Chen China Research Institute of Radio Wave Propagation, Qingdao 266107, China Email: 85228446@qq.com

Abstract With the rapid development and wide application of 3D visualization technology, many engineering applications require the manifestation of isoline by 3D geographic information system. Hereby, the effective generation of isoline on marble has been introduced. The results of examples show that the isoline based on marble is true, vivid and intuitive. Keywords: isoline; marble; region grids; Qt

基于marble的等值线显示研究 程延锋,郭延波,杨东升,张连迎,陈跃 中国电波传播研究所,山东 青岛 266107 摘

要:随着三维可视化技术的高速发展和广泛应用,很多应用工程领域需要三维地理信息系统显示等值线。据此本文

介绍了在marble上高效实现等值线。实例结果表明,基于marble的等值线显示真实、形象和直观。 关键词:等值线;marble;地域网格;Qt

引言 等值线图是现代科学研究中一种重要的离散数据的图形表示方法,广泛应用到气象、地质和矿产等诸 多领域[1-3];为了将离散数据的等值线进行可视化应用研究,相对于虚拟的二维地球平面载体,虚拟的三维 地球模型作为载体更加具有直观性和真实性,所以选择三维地球模型作为载体。目前比较流行的地理信息 软件如谷歌的Google Earth[4]就是一个典型的代表,但其存在三维数据的数据量巨大、代码数量大和操作繁 琐等缺点,而GNU下的marble[5]为我们解决这一问题提供了一个有效的途径。在此基础之上,本文提出了一 种在marble上基于地域网格的等值线生成软件。

1

Marble简介和应用方式 marble是一个地理地图集和虚拟桌面地球仪,具有一套完整的地理位置信息,可以使用marble查找地、

测量距离和位置的信息检索有关细节。marble提供了多种不同的视图,可以在线浏览地球上的地图区域,也 可以把地图区域下载下来,然后离线使用。marble是一个跨平台的开源软件,可以运行在所有的桌面和移动 平台,支持的操作系统包括Linux、Windows、Mac OS X和MeeGo Qt/C++。 marble的所有特性都是由libMarble库所提供的,libMarble是基于Qt框架所建立的库,Qt是一个多平台的 C++图形用户界面应用程序框架,它为程序员开发多平台应用程序提供了方便[6]。由于libMarble是基于模块 和插件的,可以根据需要在marble中嵌入自己所编写的插件。基于marble自身的特点,有两种方式可以对等 值线数据进行可视化应用研究。 a)由于在Marble中,根据需要编写特定功能的插件,所以对数据可视化的应用研究可以作为独立插件 嵌入到marble中; b)通过编译源代码,生成对应的动态库,在动态库的基础上建立一个独立的程序实现对空间数据可视 -9http://www.ivypub.org/cst


化的应用研究。 本文采用第二种方法实现对离散数据的等值线研究,其主要包括以下两个方面。 a)通过cmake、Qt4和VS2008进行编译marble的源代码和建立相应的动态库marblewidgetd.dll,在建立的 程序中,调用动态库marblewidgetd.dll提供的MarbleWidget和zoomView等API生成虚拟三维地球模 型; b)marble进行分层显示,可用通过生成不同的层,显示对应不同场景;继承LayerInterface类,在层上 实现三维图形的显示、旋转、平移和缩放等功能。

2

等值线生成算法及实现

2.1 等值线生成算法 目前绘制等值线算法主要有网格追踪法[7]、区间树索引提取法[8]和预测跟踪法[9]等。网格追踪算法的基 本原理是:从绘图区域边界开始,利用线性插值逐网格追踪每条等值线,得到各条等值线在其所穿过的网 格边上等值点的坐标,将坐标结果存放在链表中,在链表中找到一条或者多条等值线,对等值线进行平 滑,绘出连续光滑的等值线。对于每个网格存在三种情况:不存在等值线点、存在一对等值线点和存在两 对等值线点。 在网格追踪法的基础上,按照marble上的大圆距离步进和方位步进把区域划分成多个地域网格;对每个 地域网格利用线性插值得到网格存在的等值点对并插入到等值线点对链表中;遍历链表中存在的一条或多 条等值线,每条等值线上的点转换成经纬度坐标,使用二次B样条拟合法进行平滑,在marble上绘制出光滑 的等值线。其算法流程图如图1所示。 开始 按照大圆距离和方位步 进构造地域网格 对每个地域网格进行线性插 值查找等值点对 否

是否存在? 是

对网格进行线性插值找到等值点对并 加入链表 遍历链表按一定方向找到存在的等值 线(大于或者等于1条) 把等值线上的点(大圆距离和方位)利 用计算公式转换成点的经纬度 在marble上使用二次B样条 拟合法绘制成光滑的等值线 结束

图1 等值线生成算法

2.2 基于marble的等值线实现 基于marble的等值线显示软件是Qt写成,子类化marble的MarbleWidget类,实现了三维可视化窗体空 间,该控件可以插入到其它Qt窗体控件中;由于marble一直刷新界面,所以对于等值线点对的生成放在一个 独立线程之中,通过Qt中信号和槽的消息通信机制实现等值线数据的交互和显示,具体实现如下。 a)marblewidgetd.dll、marblewidgetd.lib和相关数据文件放到绘制等值线工程debug目录之下; - 10 http://www.ivypub.org/cst


b)在定义MarbleWidget类的对象的头文件中,加入如下代码: //定义MarbleWidget类的头文件 #include <marble/MarbleWidget.h> //定义继承LayerInterface类的头文件 #include "reglayer.h" using namespace Marble; MarbleWidget* m_pWgt; reglayer * m_pLayer; c)在定义MarbleWidget类的源文件中,主要加入如下代码: //申请marble对象 m_pWgt = newMarbleWidget(this); m_pWgt->setGeometry(QRect(0,0,700,700)); //加入主题地图纹理 m_pWgt->setMapThemeId("earth/srtmsrtm.dgml"); //marble初始大小 m_pWgt->zoomView(1500); …… //申请对应的图层 m_pLayer = new QregLayer(m_pWgt); //图层加入marble m_pWgt->map()->addLayer(m_pLayer); d)在定义的reglayer层中,render()是主要绘制等值线的函数,主要加入如下代码: //找到的n条等值线进行绘制 for(int j = 0; j < n; j++) { //计算每条等值线对应的颜色 Color = m_Scale->dValue2Color(dValue[j], &bIsVal); pPainter->setPen(QPen(color)); //循环找dValue[j]值的每条等值线 for(int t = 0; t < m_GroupList[j].size(); t++) { QList<VexValue> list = m_GroupList[j].at(t); GeoDataLineString line; //等值线上的点转换成经纬度 for(int i = 0; i < list.size()/2; i++) { CalPOS(m_Home, list, i); } //绘制等值线 pPainter->drawIsoLine(line); } - 11 http://www.ivypub.org/cst


} e)在计算等值点对的线程中,主要加入如下代码: ///等值线的对象 QIsoData *m_pIsoData; //初始化等值线数据,包括数值、方位数//个和距离个数等 m_pIsoData->setIsoData(data, nD, nAzi); //构造地域网格 m_pIsoData->makeQglIso(); //循环查找n个值的等值线点 for(int i = 0; i < n; i++) { m_pIsoData->getIsoLine (dValue[j]); } 基于marble的等值线图如图2所示。

图2 基于marble的等值线图

3

结论 本文进行了基于marble的等值线显示研究,包括marble的特点、等值线生成算法以及基于marble的等值

线绘制;所绘制的等值线真实、形象、直观,可视化效果好。基于marble的等值线显示在我们的项目中,解 决了很多实际问题,如电离层电子浓度的三维显示,具有很好的实用与经济价值。

参考文献 [1]

杨义辉. 基于ArcGIS生成煤矿瓦斯地质图等值线的研究[J]. 矿山测量, 2013, (2): 13-16.

[2]

陈永辉, 卢德唐, 黄丰. 地质构造等值线原理及实现技术[J]. 计算机应用与软件, 2006, 23(4): 83-85.

[3]

刘德义, 钱建平, 吴晓明等. 基于ArcObjects的气象等值线自动生成技术及应用[J]. 气象与环境学报, 2010, 26(3) : 44-47.

[4]

史晓亮. 基于Google Earth的潘家窑工区煤田三维地震勘探的技术应用[J]. 工程地理物理学报, 2014, 11(4): 457-461.

[5]

The Marble Project. The Marble Handbook[EB/OL]. 2013.https://docs.kde.org/trunk5/en/kdeedu/marble/index. html. Marble Project.

[6]

中国软件技术有限公司著. Qt程序设计[M]. 北京:清华出版社, 2002.

[7]

孙桂茹, 马亮, 路登平等. 等值线生成与图形填充算法[J]. 天津大学学报, 2000, 33(6): 816-818. - 12 http://www.ivypub.org/cst


[8]

王涛, 毋河海, 刘纪平. 基于区间树索引的等高线提取算法[J]. 武汉大学学报(信息科学版), 2007, 32(2): 131-134.

[9]

刘平芝. 地图等高线矢量化中的预测跟踪法[J]. 测绘技术装备, 2005, 7(4): 3-4.

【作者简介】 1

程延锋(1981-),男,汉,硕士,工

郭延波(1981-),男,汉,硕士,高级工程师,主要研究

程师,主要研究方向为电波传播、数值

方向为软件设计、电波传播、模式识别等方面的工作。

计算、软件开发等方面的工作

杨东升(1980-),男,硕士,高级工程师,主要研究方向

Email:85228446@qq.com。

为电波传播、数值计算等方面的工作。 张连迎(1983-),男,本科,工程师,主要研究方向为大 气无线电噪声和无线电干扰测量方法研究等方面的工作。 陈跃(1979-),男,硕士,工程师,主要研究方向为电波 传播和软件开发等方面的工作。

- 13 http://www.ivypub.org/cst


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.