跨平台地图SVG标图方法研究

2011-06-07 01:34胡庆武龚书林
电光与控制 2011年11期
关键词:标图跨平台开源

李 艳,胡庆武,龚书林

(1.长安大学信息工程学院,西安 710064;2.武汉大学遥感信息工程学院,武汉 430079;3.武汉立得空间信息技术有限公司,武汉 430074)

0 引言

应急指挥、多兵种联合作战或演习要求基于地图一体化共享态势。标图必须具有易读性、可缩放性以及与平台无关性,能在指挥中心、工作站和现场终端上快速传递、无缝交换和共享[1-2]。通常态势图标图方法有3种:一是使用位图文件,但数据量大,支持缩放和旋转易变形失真;二是建立标图符号模型,每一个标图符号由专门符号算法库实现,不利于标图人员扩展标图符号;三是使用SVG(Scalable Vector Graphic),以适应以XML标准的网络传输共享,符号扩展容易,在很多标图系统中得到使用[3-7]。随着网络化地图态势标图和信息分发系统的不断扩展,各种嵌入式终端引入带来了终端操作系统的多样性,如WinCE、Windows Mobile、Palm OS、Symbian、Android、iPhone 等,给地图标图技术提出了新的挑战。地图标图需要解决在各种桌面系统和移动终端下跨平台传输、显示和交互的问题,开源Qt以其强大的功能、良好的可移植性成为一种被广泛使用的图形图像开发平台[8-10]。本文提出了基于开源Qt和SVG的跨平台地图标图方法。结合SVG和Qt特点,提出了基于Qt的SVG结构化标图符号描述模型,设计了基于开源Qt的跨平台SVG标图符号体系,进一步提出了动态标图方法,采用同一个标图内核编译了不同操作系统下的标图原型,解决了不同操作系统下地图标图应用,显示效率和效果均能满足智能应用要求。

1 跨平台地图标图需求与Qt SVG

标图要解决两方面问题:一是跨部门快速网络传输和交换;二是跨操作系统共享、表达和使用。基于结构化XML的SVG是一种可缩放矢量图形标准,其扩展性强,易于交换,可解决标图在不同网络环境中快速传输及在不同应用系统中交换共享问题[11]。对于不同终端中标图符号的共享与表达,一般可设计不同操作系统下的支持类库,其结果是标图符号开发、维护和使用不便。开源Qt是一个跨平台的C++图形用户界面库,基于Qt构建的应用程序可部署在多个桌面和嵌入式设备上,而无需重写源代码;同时,Qt是一个开源的应用程序框架,将Qt编译框架和SVG标准相结合[11],可以解决地图标图符号网络化、跨平台传输和共享问题,这也是本文提出基于Qt和SVG相结合解决跨平台标图技术途径。Qt支持XML跨平台解析,在Qt 4.1版本后通过一个 Qt SVG模块支持 SVG 1.1、SVG 1.2的解析,通过二维图形模块绘制,可实现对SVG支持,其实现逻辑如图1所示。如图1所示,Qt通过对其XML扩展模块Qt SVG来支持SVG解析,实现对SVG标图符号支持,然后利用Qt跨平台绘图模块完成对SVG表征符号的绘制。

图1 基于Qt的SVG支持实现逻辑Fig.1 Qt extension principle to support SVG

2 基于Qt的SVG标图设计

综合SVG矢量图形数据格式优点和Qt跨平台编译能力,可利用QtSVG模块设计地图标图符号体系,包括基于SVG的标图符号数据组织存储和基于Qt的标图符号操作。

2.1 基于SVG的标图数字组织存储

采用SVG 1.2格式存储每个标图符号,每个SVG文件代表一个符号,常规的标图符号采用标准SVG格式,非常规标图符号采用扩展SVG格式存储,SVG文件按标图编码命名。SVG标图符号的数据模型如图2所示。

图2 SVG标图符号数据模型Fig.2 Data model of SVG based on map plotting symbol

每一个标图符号可按照图2所示的SVG物理模型定义其标准状态,包括符号尺寸、可见性、填充和符号中图元对象。图3给出了基于SVG格式定义的一组典型的标图符号(海军(点)、进攻方向(线)和配置区域(面))显示效果。

图3 不同类型的标图符号Fig.3 Different types of map plotting symbol

标图文档同样按照XML格式自定义组织,为了提高解析效率,每一个标图文档中包含的标图符号通过编码区分,一个标图文档可以按照如下示例格式定义。

其中,Items结点存储当前文档包含所有标图对象列表,Item结点存储每个标图符号对象,其属性包括code(标图符号编码)、x&y(标注坐标)、scale(符号缩放参数)、rotation(符号旋转角度)。每一个Item对应一个CPlottingPointItem或者CPlottingLineItem实体对象。

标图符号制作可在支持SVG文档编辑的二维矢量制图软件中完成,通常可采用AutoCAD、SVGDeveloper等软件工具。

2.2 基于Qt的标图符号操作

Qt SVG模块可实现标图符号的加载、显示和编辑操作,其中标图符号编辑功能包括标图符号的增、删、改、缩放、旋转等。实际上,Qt平台下地图标图符号直接继承GDI+绘制机制,利用Qt对GDI+的跨平台编译能力实现在此框架上的标图操作。一个基于Qt的标图符号组件包含两层结构:一是数据交互层,实现标图符号存取;二是用户交互层,提供用户编辑交互接口,包括鼠标和键盘操作,并将用户编辑结果保存,其对象体系如图4所示。

图4 基于Qt的标图操作对象体系Fig.4 Object architecture of map plotting operation based on Qt

图4中,CPlottingDocument对象实现标图文档管理,CSvgItem对象完成标图SVG文件及XML文档解析及绘制,CPlottingItem对象继承于Qt的QGraphicsSvgItem,实现标图编辑。

3 动态标图实现技术

动态标图对于丰富标图形式、提高标图效果和扩展标图应用非常有效。采用SVG组织的标图符号可利用Qt的图形显示框架实现在不同平台中的标图动态推演,其基本原理是利用Qt提供的QGraphicsItem-Animationhes对象与SVG标图符号关联,该对象具有改变位置、旋转、尺寸缩放和裁剪等方法,允许以时间线方式让动画在视图上以一个稳定的速度操作。本文提出可采用Qt中时间触发管理对象QTimeLine来控制动画时间参数。为了实现以上标图动画过程,本文基于开源Qt提供的图形显示框架在开源Qt的基础上扩展一个CSvgAnimation对象,该对象继承于QgraphicsItemAnimationhes对象,但根据与时间控制对象的结合重写相应接口,具备了特定动画帧管理方实现标图符号的动画播放,达到动态标图目的。如图5所示为线状标图动态推演流程图。

图5 标图符号动态推演流程图Fig.5 Dynamic deduction flow chart of map plotting

4 实验结果分析

为验证基于开源Qt的跨平台标图技术合理性,以本文设计的标图符号模型在SVGDeveloper软件中设计了238种标图符号。以开源Qt 4.1.5版本源代码为基础,以本文提出的标图技术和符号体系分别编译了Qt for WindowsXP和 Qt for Windows Mobile 5.0两套执行程序。如图6所示为两套软件导入同样标图文档和地图数据运行效果。

图6 不同平台下的标图效果Fig.6 Map plotting result of different operation systems

由图6可见,本文提出的标图符号技术能够适应不同的操作系统平台,并且与标图系统显示界面的配置无关,充分体现了SVG共享交换特点和开源Qt的跨平台编译能力,具有较好的通用性。在这种体系下,地图标图可以在不同的桌面系统和移动终端间进行传输、显示和交互,无需单独的符号库支持,只需通过标图编码即可实现标图意图的共享,降低了在不同系统间共享信息的安全性和对通信网络的要求。

图7给出了基于本文动态标图技术实现的标图推演中3个关键帧效果。

图7 动态标图推演效果Fig.7 Deduction result of dynamic map plotting

由图7可见,本文设计的动态标图技术充分利用了Qt的二维动画图形框架和Qt对时间的控制管理,SVG标图能够按照设计的推演路径平滑运动,并且可以利用SVG文件中初始旋转矩阵与路径矢量进行矩阵变换,实现了在推演过程中不同状态参数的设置和显示。

5 结论

SVG以其不断完善的标准使得标图符号的表达规范具有结构性、完备性等特点,为标图符号的网络共享和互操作提供一个基础解决方案。开源Qt为标图系统的跨平台编译应用提供了支持环境,本文将开源Qt和SVG相结合,提出了一种面向多形式网络环境下标图技术,该方法通过跨平台SVG标图技术实现地图标图在不同桌面操作系统和移动终端间的传输、显示进而交互,只需通过标图编码即可实现标图意图的共享,对于利用标图进行指挥与响应信息的快速分发、共享和应用提供了技术手段,有利于多终端网络标图系统标图操作、扩展和软件系统的维护,可有效地提高标图信息的安全性,降低标图意图传递的网络要求,对于提高标图能力和扩展标图应用具有较高的实用价值。

[1]胥少卿,路建伟,钱叶魁,等.基于SVG的战术标图系统设计与研究[J].电光与控制,2006,13(2):101-104.

[2]巨亚荣,刘小兵.SVG技术在军事标图中的应用研究[J].重庆科技学院学报:自然科学版,2008,10(3):118-120.

[3]JIANG Lili,QI Qingwen ,ZHANG An.The thematic mapping system on internet[C]//Proceeding of 18th International Conference on Geoinformatics,Beijing,2010:1-4.

[4]赵恩来,郝文宁,赵水宁,等.改进的基于密度方法的态势聚类显示算法[J].计算机工程,2010,36(18):35-37.

[5]尹章才,李霖,朱海红,等.基于SVG的地图符号描述模型研究[J].武汉大学学报:信息科学版,2004,29(6):544-547.

[6]王铮,李霖.基于SVG的面状地图符号设计与实现[J].测绘科学,2007,32(3):169-170.

[7]周文生.基于SVG的WebGIS研究[J].中国图像图形学报,2002,7(7):693-698.

[8]赵毅,游有鹏.基于Qt/Embedded的嵌入式数控系统人机界面设计与开发[J].工业控制计算机,2008,21(4):68-71.

[9]宋荣.基于Qt/Embedded的嵌入式系统GUI开发[J].机电工程,2009,26(4):90-93.

[10]DAL HEIMER M K,HANSEN S.Embedded development with Qt/embedded [J].Dr.Dobbps Journal,2002,27(3):48-53.

[11]DELALANDRE M,HéROUX P,ADAM S ,et al.A statistical and structural approach for symbol recognition using XML modeling[J].Lecture Notes in Computer Science,2002,2396:201-238.

猜你喜欢
标图跨平台开源
重磅!广东省“三旧”改造标图入库标准正式发布!
从技能生成规律入手优化作战标图技能训练方法
五毛钱能买多少头牛
跨平台APEX接口组件的设计与实现
大家说:开源、人工智能及创新
开源中国开源世界高峰论坛圆桌会议纵论开源与互联网+创新2.0
基于QT的跨平台输电铁塔监控终端软件设计与实现
基于OPC跨平台通信的电机监测与诊断系统
基于B/S的跨平台用户界面可配置算法研究
放心标图员