APP下载

基于消息通信的移动协同GIS

2016-12-27陈德权

地理空间信息 2016年7期
关键词:协同工作序列化引擎

陈德权

(1.福建省基础地理信息中心,福建 福州 350002)

基于消息通信的移动协同GIS

陈德权1

(1.福建省基础地理信息中心,福建 福州 350002)

为降低移动终端实时GIS协同工作的数据传输量,提出了以消息通信的方式构建移动协同GIS系统的方法;阐述了系统的实现原理,设计了系统结构;并以Protobuf为消息载体实现了原型系统。

GIS;协同;消息通信;Protobuf

随着3G和4G移动网络的普及以及手机终端设备计算能力的不断提升,利用移动终端进行高性能计算、移动办公及群体协作将会更加普及。计算机支持协同工作(CSCW)是指在计算机支持的环境中,一个群体协同工作完成一项共同的任务。CSCW与GIS的结合产生了协同GIS(CoGIS),它能让异地分布的用户在同一时间共同参与同一项目。CoGIS的主要特征可概括为分布性、共享性和实时性。它是G1S发展的一个重要趋势[1-3]。

由于GIS自身数据量大且结构复杂以及移动网络环境下流量使用的限制,要实现移动CoGIS就必须考虑在实现CoGIS特征基础上如何最大程度地降低网络传输的数据量。本文以消息通信的方式构建移动CoGIS,对消息类型进行合理划分,以Protobuf为数据传输格式,实现了原型系统。

1 移动CoGIS系统结构

1.1 系统实现原理

移动CoGIS中的消息通信是在移动网络下完成的,同一时刻会有大量协同操作同步传递,如何最大程度地减少数据传输量是首要考虑的问题。若都以传输操作结果的方式来实现GIS协同工作将会带来大量的数据交互,占用移动网络带宽,降低通信效率,且在其他的协同移动终端无法体现操作过程。因此需要对常用的GIS操作进行抽象,并根据操作类型按一定规则封装成命令消息或内容消息,通过通信信道传输到其他终端完成协同工作过程。实现过程如下:

①移动终端与服务器链接,建立通信通道;②协同发起者在移动终端上执行某一GIS操作(如放大地图),生成预先定义好的GIS命令消息,将该操作的具体参数值(当前中心点、放大级别)传递到命令消息中;③消息组件将命令消息通过通道传输到服务器;④服务器接收到命令消息后,将该消息以同样方式发送到其他协作者的移动终端上;⑤其他移动终端接收到该消息后进行解析,并将操作还原到GIS界面上,完成协同过程。

1.2 系统结构

从系统实现原理可以看出,一个服务器用于管理协同操作,移动终端的协同操作都通过服务器实时处理后转发给各协同终端。系统结构如图1所示。

图1 CoGIS系统结构

用于管理协同工作的服务器应用程序称为协同引擎,实现协同控制、协同感知等协同管理所必备的功能。GIS命令/内容消息和非GIS命令/内容消息包括从移动终端发送到协同引擎和从协同引擎发送到移动终端,均通过协同引擎接收、处理和转发。移动终端中用于实现GIS操作的基础地理底图通过在线调用地图服务方式获取,在此地理底图上进行协同标绘、位置共享等GIS操作。操作的结果在本地终端设备上展示,同时将该GIS操作生成命令或内容消息,通过协同引擎自动记录并同步到各协同终端展现,从而达到你见即我见的协同效果。

在CoGIS中,通信是成员间相互感知和信息沟通的基本途径[4-5]。移动终端与协同引擎之间的通信是靠系统定义的一系列命令消息和内容消息完成的。命令消息一般包含加入退出协同工作、用户状态、权限控制等与协同控制感知有关的消息;内容消息包含实现具体GIS协同标绘内容、协作交流内容等与协同具体工作有关的消息。只有合理地划分系统的消息类型,才能保持协同系统工作的高响应性以及协同过程的可再现。

1.3 消息通道建立

移动终端和协同引擎是通过Socket建立消息通信的。消息通道的建立流程如图2、3所示。协同引擎启动时会创建Socket链接的监听端口,移动终端运行时通过Socket链接协同引擎的监听端口。当协同引擎获取到终端链接时,则向终端发送应答信息并进入接收心跳包状态;移动终端收到协同引擎链接成功的应答信息后,定时向协同引擎发送心跳包。协同引擎收到心跳包后则说明当前的移动终端在线,进入与该移动终端的消息通信状态;若协同引擎在一段时间内无法收到终端发送的心跳包,则说明当前的终端已失去链接,协同引擎会主动断开该终端的链接。

图2 服务器与客户端消息通道建立流程

图3 客户端与服务器消息通道建立流程

2 基于Protobuf的通信消息设计

2.1 消息协议制定

客户端与协同引擎之间的通信是通过命令消息和内容消息实现的,每个通信消息中都包含终端信息和消息类型,每种消息都用实体类表示,将消息实体类通过序列化和反序列化完成消息的传输和解析。客户端和协同引擎都有各自的消息处理模块,根据消息类型和消息名进行解析并作相应处理。

将系统中的协同操作抽象成命令消息,如协同工作下发、加入或退出协同工作、地图操作等。命令消息主要用于控制和更新协同工作的状态。协同工作过程中所产生的地图标绘、位置上报、协作交流等数据通过内容消息传递。内容消息中与空间信息有关的部分,如地图标绘、实时位置等用WKB标准二进制数据作为消息类中的属性表示,其他的文本内容消息按常规的字符串存储。

2.2 基于Protobuf的消息编码

合理、高效的消息结构是实现GIS协同操作的关键因素[6]。Protobuf是一种轻便高效的结构化数据存储格式,它在序列化速度和内存占用等方面都比xml或json更优[7-8],在移动开发中更适合作为数据传输的格式。

要将消息类以Protobuf的格式序列化及反序列化传输,需要在类及其属性中增加类标签和字段标签。类标签是在类名称上增加[ProtoContract]的声明,用于标识该类是用Protobuf序列化。字段标签是在字段上增加[ProtoMember(n)]的声明,用于标识该字段是允许Protobuf序列化的,并且n用具体的数值来表示该字段在序列化时的位置,在反序列化时也按这个标识的字段顺序依次解析各属性字段,从而实现数据流和对象之间的转换。

3 原型系统的实现

原型系统实现协同工作的创建下发,协作者加入协同工作完成同一任务。用户分为协同管理员和协作者,协同管理员负责协同工作的创建,创建的同时将消息发给协同引擎,协同引擎在服务器端创建协同工作的共享空间,同时将消息转发给各协同终端,通知协作者加入协同工作。当协作者加入协同工作时,在用户列表中更新当前的在线用户。协作者和协同管理员在该协同工作空间中可以查看成员的空间位置、移动路线,各成员间可以收发消息进行协作交流,可以在地图上标注目标点等,所有协同操作都可实时同步共享。系统实现效果如图4、 5所示。

图4 手机端协同标注

图5 平板端同步标注结果

4 结 语

当前大量应用场景需要移动CoGIS系统为支撑,如应急事件处理、战场环境指挥、安全生产监管等,本文基于消息通信构建了移动协同GIS原型系统,实现了人人交互,满足了群体协作的应用需求。因此,只有通过引入CSCW技术,建立基于GIS的协同工作平台,才能进一步丰富GIS的功能,扩展GIS的应用领域。

[1] 胡雪莲,程承旗,孙永军,等.协同GIS:CoGIS概念初探[J].中国图像图形学报,2003,8(6):715-720

[2] 郭朝珍,王钦敏,庄苗,等.空间数据协同编辑平台协同机制的研究[J].计算机集成制造系统,2006,12(5):778-781

[3] 童飞.异构协同GIS系统的框架模型和数据索引[D].南京:南京师范大学,2008

[4] 胡雪莲,程承旗,马蔼乃,等.CoGIS系统中通信子系统的设计与实现[J].计算机工程与应用,2003,39(28):10-12

[5] 史美林.计算机支持的协同工作[M].北京:电子工业出版社, 2000

[6] 承达瑜,陈军,韩刚,等.基于消息队列的实时GIS协同操作研究[J].中国矿业大学学报,2012,41(1):127-132

[7] Gligoric N, Dejanovic I, Krco S. Performance Evaluation of Compact Binary XML Representation for Constrained Devices[C].2011 International Conference on Distributed Computing in Sensor Systems and Workshops (DCOSS), Barcelona,2011

[8] Wendt A, Faschang M, Leber T, et al. Software Architecture for a Smart Grids Test Facility[C]. 39th Annual Conference of the IEEE Industrial Electronics Society,Vienna,2013

P208

B

1672-4623(2016)07-0082-03

10.3969/j.issn.1672-4623.2016.07.026

陈德权,硕士,工程师,主要研究方向为地理信息系统和地理信息网络共享。

2016-03-03。

项目来源:2016年福建省测绘地理信息局科技创新资助项目(2015J06)。

猜你喜欢

协同工作序列化引擎
如何建构序列化阅读教学
蓝谷: “涉蓝”新引擎
Java 反序列化漏洞研究
EVA业绩评价模式下业财融合协同工作模式对企业价值管理的重要性
无形的引擎
作文训练微格化、序列化初探
基于Cocos2d引擎的PuzzleGame开发
地理信息系统与勘探开发协同工作平台建设方案
第二届“BIM技术在设计、施工及房地产企业协同工作中的应用”国际技术交流会在北京成功举办
Java序列化技术的探讨