基于OSMDroid地图引擎的传感器数据实时可视化方法研究

2016-05-19 01:31焦东来陈雪飞张索非
地理与地理信息科学 2016年5期
关键词:图元绘制可视化

焦东来,陈雪飞,蒋 贺,张索非

(1.南京邮电大学地理与生物信息学院,江苏南京210046;2.南京邮电大学通信与信息工程学院,江苏南京210003; 3.南京邮电大学物联网学院,江苏南京210003)

基于OSMDroid地图引擎的传感器数据实时可视化方法研究

焦东来1,陈雪飞2,蒋 贺2,张索非3

(1.南京邮电大学地理与生物信息学院,江苏南京210046;2.南京邮电大学通信与信息工程学院,江苏南京210003; 3.南京邮电大学物联网学院,江苏南京210003)

随着物联网和移动实时地理信息系统的发展,基于地图的传感器实时监控系统将成为管理物联设备的新途径,而传感器数据的实时可视化是提高监管效率的主要方法。该文提出一种以开源OSMDroid(Open Street Map)为地图平台,基于自定义矢量地图符号实时展示传感器数据的方法,并在Android移动终端上实施验证。该方法利用可缩放矢量图形(Scalable Vector Graphic,SVG)将传感器设备抽象为自定义矢量地图符号,根据传感器数据类型设计地图符号图元与传感器数据的映射规则,据此在地图上实时刷新传感器设备地图符号。地图符号的视觉变量随传感器数据实时改变,从而实现传感器数据的实时可视化显示。实验结果表明,通过地图符号实时可视化传感器数据可有效提高传感器设备管理效率,及时获取设备数据,为传感器设备管理提供一种直接有效的途径。

开源地图OSMDroid;SVG;地图符号;传感器;实时可视化

0 引言

地理信息系统(GIS)集计算机、测绘、遥感、地理学、空间科学、信息科学和管理科学于一身,对空间信息进行分析和处理,将地图的视觉化效果和地理分析功能与数据库操作集成在一起[1]。随着GIS的社会化,以地图为载体的应用尤为广泛,基于GIS的设备设施管理已成为GIS应用的重要方面[2]。物联网的快速发展,对传感器设备高效便捷的管理需求,使GIS成为管理传感器设备的一种直观有效的途径。

随着移动终端设备的普及,移动GIS成为传感器设备管理的新手段。GIS的空间信息分析处理能力与移动终端设备的灵活便利性相结合,使传感器设备的管理更方便。较之于普通设备,传感器设备需实时获取数据并展示,因此,如何实时展示传感器的数据成为基于移动GIS的传感器管理应用方面的重点。虽然基于移动GIS在设备管理方面已有较成熟的理论和方法,但是针对传感器实时数据展示方面,并没有相应的方法。国内外GIS厂商提出的移动GIS应用方案提供着各种移动GIS商业服务,如ESRI公司设计开发的ArcPad提供地图导航、查询要素、地图测量等功能,但缺乏传感器设备监控管理的应用开发。Wilkie等[3]利用GIS数据设计交通道路仿真3D模型显示实时路况,但在交通信息实时数据展示方面存在不足。国内相关的应用也局限于传感器位置信息的显示,实时数据的展示则依靠其他途径,如李神送等[4]实现在Android手机地图上显示传感器的地理位置,而传感器的实时数据则通过列表的形式展现。刘茂华等[5]实现在移动Android平台实时查询公交情况,但并未实现公交车辆实时状态的可视化(如车况、耗油状况等),仅以地图的形式展示公交车辆的实时位置。

为了解决数据源实时性和界面显示实时性的问题,国内外学者提出了实时GIS,其不仅能反映事物的最新状态,也可以反映事物随时间变化的不同状态[6]。利用实时GIS的突出特征,可动态获取实时数据并及时处理,做到状态消息的实时推送和地图显示界面的实时更新。实时GIS可结合操作系统和实时数据获取的形式实现,本文即是在Android操作系统下采用该方式实现传感器数据的实时获取[7]。

OSMDroid地图引擎是移动GIS较常用的一个开发插件,其提供了栅格和矢量两种地图的可视化方式,代表了一般移动GIS软件,本文以OSMDroid地图引擎为例,探讨了移动GIS下传感器数据实时可视化的方法。通过分析移动GIS实时数据及可视化的特点,提出了基于数据映射的自定义地图符号在地图上实现传感器数据实时可视化的方法,并在OSMDroid地图引擎中进行验证。

1 移动GIS可视化与传感器实时可视化

1.1 移动GIS可视化

GIS可视化是可视化与地理信息数据结合而形成的技术,运用地图学、计算机图形学和图像处理技术,将结果采用图形符号等可视化方法在屏幕上显示出来,并进行交互处理的理论、方法和技术[6]。在移动终端上的GIS可视化与GIS可视化相同,目前主要有两种表达方式,即矢量化图形和栅格图像。利用栅格图像实现移动GIS可视化操作简单易实现,但存储数据量大,地图操作时存在失真现象;而矢量化图形的表达方式需要移动终端具有很强的图形处理能力,地图图形不失真且图像数据量小。随着硬件技术的快速进步,目前的移动设备具备较强的计算和实现能力,因此矢量化图形因其不失真等优点得到广泛使用。较之于栅格图像,矢量化图形表达方式更加灵活,就GIS矢量化图形的可视化过程而言,地图符号化仍是其主要途径。在可视化过程中,经过坐标转换将地图的平面坐标转换为设备的显示屏幕坐标,然后利用设备的图形函数进行屏幕绘制,在地图绘制过程中,选择样式或地图符号,最终实现矢量图形可视化。由于在绘制过程中可以更换样式或地图符号,因此矢量图形可视化的过程更灵活,展示效果更丰富。

1.2 传感器数据可视化

在移动地图上实现传感器实时数据可视化的过程就是移动GIS可视化的过程。传感器数据可视化本质上属于实时数据可视化,通过建立实时数据和视觉变量(颜色、形状等)对应关系的方式,最终将实时获取的数据以直观的图形方式展示出来,与传统数据可视化不同,实时数据可视化不断通过触发器事件来刷新实时数据可视化的内容[7]。在基于移动GIS的传感器设备管理过程中,传感器设备被抽象成地图上的点符号,通过图层加载传感器符号到移动地图中,而地图符号是由不同的视觉变量构成的,因此传感器数据在地图上可视化的根本是建立传感器数据与地图符号视觉变量的映射关系,通过传感器数据的消息触发器,驱动地图符号数据的变化,以达到地图上传感器数据实时可视化的目的。

2 面向传感器数据可视化的SVG地图符号定义

2.1 地图符号的视觉变量与传感器数据可视化的关系

地图上能引起视觉变化的基本图形、色彩元素称为视觉变量,也叫图形变量,是构成地图符号的基本元素[8]。绘制矢量地图符号时,由于其是基于图元的设计模式,因此通过绘制参数控制符号的视觉变量信息(如形状、颜色的不同),形成一系列具有不同意义的自定义地图符号。

当传感器设备被抽象成地图符号显示在地图过程当中,自定义地图符号虽然实现传感器设备的可视化,在地图上仅仅显示传感器的地理位置信息及状态信息,并不能实现传感器数据的实时可视化,需要通过传感器数据变化驱动视觉变量变化实现。建立传感器数据与视觉变量直接映射的可视化描述,视觉变量与属性值一一对应,通过条件判断的方式表达传感器数据与视觉变量的映射关系。定义该条件判断产生式的条件和结果,通过“IF…T HEN”的产生式结构描述映射规则,利用逻辑判断实现视觉变量在特定条件下的不同视觉表达。

建立自定义地图符号与传感器数据的映射关系要求其地图符号的所有图元可被提取且编辑,即图元的要素属性可修改,因此自定义地图符号必须是可编辑矢量图形而不是传统的栅格图像。SVG图形元素和矢量地图符号图元相似,组成其图形的每个图元都可提取并编辑,尹章才等[9]提出使用SVG代替传统栅格图像绘制地图符号,利用SVG这一特性方便建立地图符号与数据的映射关系。

2.2 SVG地图符号定义

SVG是W3C组织(万维网联盟)推出的新一代基于XML的开放的矢量图形描述语言,支持矢量图形,如矩形、圆形、椭圆形、多边形、贝塞尔曲线等,具有灵活的坐标控制手段,可加入用户自定义的符号,因此可以说它是图形、图像和文字的有机统一。由于SVG是XML文本文件,继承了XML的跨平台性和可拓展性,可以用任何文本编辑器创建和编辑[10]。SVG的独特优势,更体现在组成其图形的每个图元都可提取并编辑。以下给出一个简单组合图形的SVG文件的例子:

上文给出的SVG文件代码中,SVG符号文件的开头为XML的声明,其解析可以通过XML解析器实现;SVG地图符号的数据部分以<svg>标签开始,</svg>标签结束;其中可以包含若干个数据块,每个数据块存储在<g>标签中,数据块由若干SVG的基本图形元素(circle、ellipse、polyline、rect、polygon、line等)组成[11]。图形元素包括多个绘制参数,如其中一个矩形数据块<rect>,height和width属性定义矩形的宽和高,x和y属性定义矩形左上角的顶点在画布上的坐标,stroke和stoke-width属性控制如何显示形状的轮廓,fill属性设置形状内的颜色。图形元素绘制参数决定了SVG地图符号文件的绘制效果,因此建立传感器数据与图形元素绘制参数之间的映射关系,即可实现通过地图符号可视化展示传感器数据的过程。

2.3 SVG绘制参数与传感器数据的映射及定义

基于地图符号实现传感器实时数据的可视化,需建立传感器数据与地图符号绘制参数的映射关系,当地图符号以SVG的格式进行描述时,该映射关系就转换为传感器数据与SVG图形元素绘制参数之间的映射关系[12]。由于每一类SVG图形元素的绘制参数是固定的,为了区别同一类图形元素的不同实例,需要在图形元素中增加id属性,如表1中的每个矩形rect都添加有id号,SVG与传感器数据的映射关系正是利用此id号修改指定图元属性建立的。

表1 SVG图元与传感器数据的映射关系Table 1 The mapping relationship between SVG element and sensor data

传感器数据从传感器设备采集并通过服务器存入数据库,其数据类型分为离散型数据和连续性数据。离散型数据一般为数值为1或者0的开关变量,连续性数据一般为浮点型数值,如温度、湿度和坐标等。根据传感器数据可视化方法、数据类型及基于产生式映射规则的原理,建立如下映射方式。离散型传感器数据利用逻辑判断“=”建立映射,如表1中svg_1,此图元填充颜色对应传感器开关变量1.1。当传感器开关1.1为开,即传感器数据为1,根据映射规则将此图元的填充颜色设置为红色(# ff0000);当传感器开关1.1为闭,即传感器数据为0,则将此图元的填充色修改为灰色(#808080)。连续型的传感器数据则通过区间判断建立映射关系,如表1中svg_5,此图元对应传感器温度3.2的数据,当温度数据处于区间(20.0,100.0)时,将图元线条填充色设置为橙色(#ffa500)等。

3 基于OSMDroid的传感器数据实时可视化

3.1 安卓开源地图OSMDroid

开放街道地图(Open Street Map,OSM)开源wiki地图,是一个网上地图协作计划,OSMDroid为其应用于Android操作系统的终端地图。通过访问网站便可自由绘制地图,在地图上标示出需要的地点及添加建筑物等。基于OSM可以搭建用户自己的地图服务器,可用于嵌入网站中或者对外提供服务,如供移动设备使用等。OSMDroid地图提供Marker方法使用自定义的矢量图形作为地图符号,因此在自定义地图符号过程中,通过传感器数据与符号视觉变量关系建立矢量图形图元与传感器数据映射关系,实现自定义地图符号的传感器数据可视化。

3.2 OSMDroid上的可视化方法实现

在Eclipse的Android开发环境下,由于OSMDroid地图提供了Marker的自定义方法,所以可通过继承Drawable类及其方法绘制自定义地图符号。此地图符号不仅可以由Drawable类内部绘图工具绘制,也可通过解析外部SVG文件绘制已定义的矢量图形。

地图上每项操作功能都是通过先定义图层元件添加到图层,再将该图层覆盖在地图底图上实现的。如实现地图符号在地图上显示,需将载有地图符号的图层元件添加到图层并覆盖到地图上,在地图相应的地理坐标位置处显示地图符号[13]。如图1的UML类图所示,在OSMDroidMap绘制地图符号时新建图层元件OverlayItem对象,在OverlayItem对象中传入地理坐标位置及其他参数,该图层元件提供公共方法setMarker,允许开发人员自定义Marker,即绘制自定义地图符号作为标识符号。使用set-Marker绘制自定义地图符号由Drawable类及其子类(BitmapDrawable、ColorDrawable、PictureDrawable、ShapeDrawable等)代码实现,其中Bitmap-Drawable与PictureDrawable类用于实现图片资源自定义为地图符号,ColorDrawable类直接绘制单一几何色彩图形到画布。绘制矢量地图符号不可直接使用Drawable类直接绘制,因此定义MapSymbol继承ShapeDrawable类,在类中定义画布尺寸,存放矢量图形的元素对象,获取传感器数据和映射规则文件,实现绘制矢量图形为自定义地图符号显示在地图上。

图1 OSMDroid地图符号绘制操作UML类图Fig.1 The UML class diagram of drawing OSMDroid map symbol

移动终端运行程序时检测地图符号文件及映射规则文件,预先载入地图符号绘制模块,当图层传递坐标、传感器数据和绘图句柄过来时,绘制模块就会按照映射规则,将符号数据通过绘图句柄绘制到指定地理坐标。

3.3 传感器地图符号的数据获取、映射、绘制过程

在基于OSMDroid地图的传感器数据可视化过程中,同一类传感器使用的地图符号模型相同,只是空间位置和传感器获取的数据有差异,因此在可视化过程中,自定义符号采用一次读取、多次使用的方式,代表同一类传感器的地图符号在地图加载之前进行数据载入;符号数据加载后给予编号并常驻内存,根据映射规则和传感器数据的变化,实时更改内存符号数据模型中的绘制参数,并可视化在地图上。3.3.1 地图符号数据的获取加载过程 SVG文件的SAX(Simple APIs for XML)解析方式[14]按照标签解析,逐行扫描文档,一边扫描一边解析,如当标签为<Rect>时,新建Rect对象并将该矩形的参数值传入Rect对象中,再将此对象以属性id名存放到一个定义为IGraphicElement泛型的ArrayList列表中,以此类推,最终ArrayList存放着该SVG文件所有图元对象。

如图2所示的SVG图元解析与存储UML类图,在解析SVG文件前先创建一个接口函数IGraphicElement,在函数中定义SVG各个属性,如paint、fillcolor、strokecolor等,并初始化绘制方法,创建类AbsGraphicElement实现该接口,初始化接口函数中的方法并定义画笔属性及其他属性值。创建6个子类SVG_Circle、SVG_Ellipse、SVG_Rect、SVG_Line、SVG_Polygon(Polyline)、SVG_Path继承AbsGraphicElement父类,并重写Draw方法用于绘制图元。

图2 SVG图元解析与存储UML类图Fig.2 The UML class diagram of SVG graphic elements′analysis and storage

3.3.2 传感器数据与地图符号的映射与绘制的过程 基于3.3.1节所述方式解析SVG文件获取所有图元存储在ArrayList列表中,同时导入映射规则文件,据此映射规则建立图元与传感器数据映射关系。接收到传感器数据后对其进行判断,当传感器数据的数值发生变化,超过规则文件中定义的传感器数据阈值时,则获取相应需要修改的图元id号并在ArrayList列表中修改对应id号的图元属性值。

在地图符号绘制模块中(图3),定义一个画布Canvas后,遍历ArrayList列表获取所有图形元素,调用图元对象的Draw方法绘制各个图形元素到画布Canvas上。由于OSMDroid地图上坐标符号只可调用本地图片数据或者直接利用Drawable类绘制,所以新建一个继承Shape类的SVGShape类并将其抽象为ShapeDrawable(Drawable的子类)。在SVGShape类中,定义Draw方法绘制图元到画布Canvas上,并对该类进行数据类型转换及其他属性设置,例如在Draw方法中设置画笔Paint属性改变画布Canvas在地图上显示大小及其背景透明度等,以满足SVG图形作为地图上传感器设备的自定义坐标符号的需求。

当移动、缩放地图或者重新载入地图时,都是对地图的一次刷新,重新建立socket连接服务器获取传感器数据,重复上述流程,对比传感器数据与映射规则中阈值,根据对比结果修改相应图元属性并重新渲染绘制地图符号。通过以上数据的获取、解析及映射方法可以在地图上绘制传感器设备自定义符号,实现地图上传感器数据的实时可视化。

在测试程序中,以电机监控和加油站管理为例, OSMDroid地图预先载入表示电机和加油站的地图符号和映射规则文件,以不同变量名存储在内存中,并将地图符号绘制在不同的地理位置,通讯程序将数据发送至地图窗口,地图窗口一旦侦听到数据的变化,即可按照规则重新绘制。如图4所示,设置两种数据类型的传感器处于4个不同位置,以不同地图符号的图元表达代表传感器的工作状态。图4中左侧图例为初始化的电机和加油站地图符号,右侧图例为处于工作状态的电机和加油站地图符号。当电机工作温度高于映射规则中限制的温度阈值,电机地图符号的机身将修改为红色;当电机湿度低于映射规则限制湿度,则将其风扇定义为紫红色;电机机身上3个按钮开关开闭时的颜色变化代表转子的运行状态。加油站地图符号中的矩形窗口表示目前正在加油车辆数,以矩形色彩深浅代表拥挤程度。而油管则表示站中剩余油量,以绿色为充足,红色为报警,黑色为耗尽。用户在地图上不仅能够获取周围加油站的位置,查看地图符号还能了解每个加油站的实时使用情况,以便选取最优加油途径。

图3 传感器数据实时可视化系统流程Fig.3 Flow chart of real time visualization system for sensor data

图4 OSMDroid地图上实时可视化的应用Fig.4 The application of real time visualization on OSMDroid map

4 结语

本方案研究传感器数据在Open Street Map地图实时可视化的过程,以SVG格式的自定义地图符号为例,分析了传感器数据性质及其映射到地图符号视觉变量的方法。根据传感器数据变化实时改变地图符号视觉变量,实现传感器数据在OSM地图上的实时可视化显示。鉴于物联网应用越来越多,基于地图的传感器设备管理已经成为物联网应用领域的一个重要方面,本研究以安卓系统作为应用平台,在地图上实时绘制出传感器设备模拟图形,为传感器设备的管理和控制提供更直接有效的途径。

[1] 傅肃性.地理信息系统的理论与应用发展[J].地理科学进展, 2001(2):192-199.

[2] 李霖,许铭,尹章才,等.基于地图的地理信息可视化现状与发展[J].测绘工程,2006(5):11-14.

[3] WIL KIE D,SEWALL J,LIN M C.Transforming GIS data into functional road models for larg e-scale traffic simulation[J]. IEEE T ransactions on Visualization&Computer Graphics, 2012,18(6):890-901.

[4] 李神送,温嘉铭,刘学锋.Android手机上传感器信息的实时获取与可视化[J].电子测量技术,2015(6):104-107.

[5] 刘茂华,韩卯,王岩,等.移动GIS公交查询系统的实现分析[J].辽宁工程技术大学学报(自然科学版),2015(3):424-427.

[6] 刘文明,杨浚,朱建奇,等.GIS实时数据可视化研究[J].测绘与空间地理信息,2015(3):31-33.

[7] 王柯,王腾,张文诗,等.移动终端GIS地图数据模型研究[J].测绘通报,2015(3):53-57.

[8] 陈毓芬.地图符号的视觉变量[J].解放军测绘学院学报,1995 (2):145-148.

[9] 尹章才,李霖,王铮,等.基于SVG的地图符号设计与实现[J].测绘科学,2006(5):97-99.

[10] 程小峰,朱红军,崔兴贵.基于Mobile SVG的移动GIS数据可视化方法的研究与实现[J].科技资讯,2012(31):21-23.

[11] 刘遵雄,况志军,高玉柱.基于SVG的电力图形系统的实现[J].继电器.2005,33(21):69-73.

[12] 焦东来,苗立志,朱彩英.基于映射方法的动态GIS地图符号设计研究[J].南京邮电大学学报(自然科学版),2012(6):27 -30,36.

[13] 李基鸿.ArcGIS中自定义地图符号[J].计算机与现代化,2004 (7):113-114.

[14] 邓晓斌,黄志芳,刘小丽.利用DOM、SAX交互解析基于SVG的WebGIS地图编码[J].硅谷.2012(22):28,15.

Research of Real-Time Visualization of Sensor Data Based on OSMDroid Map Engine

JIAO Dong-lai1,CHEN Xue-fei2,JIANG He2,ZHANG Suo-fei3
(1.School of Geograp hy and Biological Inf ormation,N anj ing University of Posts and T elecommunications,N anj ing 210046;2.School of Telecommunications and Inf ormation Engineering,N anj ing University of Posts and Telecommunications,N anj ing 210003;3.School of Internet of T hings,N anj ing University of Posts and Telecommunications,N anj ing 210003,China)

With the development of Internet of things and mobile real-time geographic information system,it′s highly possible that real-time sensor monitoring system based on map becomes a new way of managing equipments in the Internet of things, while real-time visualization of sensor data is a main method to improve the efficiency of regulation.In this paper,a method of displaying real-time sensor data which based on the custom vector map symbol,using an open source OSM Droid(Open Street Map)as the map platform is presented,and the authentication is implemented in Android mobile terminal.T he method uses SVG(Scalable Vector Graphic)to draw custom vector map symbol on behalf of the sensor device.The mapping rules between map symbol and sensor data are designed on the basis of the sensor data type,according to which the map symbol of sensor device is refreshed in the map.T he visual variable of map symbol changes with the sensor data in real time,so as to realize the real-time visual display of sensor data.The experiment result shows that by realizing real-time visualization of sensor data through the map symbol and timely accessing to device information the method can effectively improve management efficiency of sensor equipments,which provides a direct and effective way for sensor equipments management,and has a wide range of application scenarios.

open source map OSMDroid;SVG;map symbol;sensor;real-time visualization

P208

A

1672-0504(2016)05-0081-06

10.3969/j.issn.1672-0504.2016.05.013

2016-01-11;

2016-03-28

国家自然科学基金面上项目(41471329)

焦东来(1977-),男,博士,副教授,从事空间信息可视化、GIS在物联网领域的应用研究。E-mail:jiaodonglai@njupt.edu.cn

猜你喜欢
图元绘制可视化
基于CiteSpace的足三里穴研究可视化分析
思维可视化
学术出版物插图的编排要求(一):图注
联锁表自动生成软件的设计与实现
基于CGAL和OpenGL的海底地形三维可视化
“融评”:党媒评论的可视化创新
超萌小鹿课程表
放学后
电气CAD接线图快速转换G图形的技术应用研究
在转变中绘制新蓝图