摘 要: 随着智能手机的普及,人们对信息的要求越来越高,现有的警情通报存在实时获取困难等问题。为解决这些问题,本文提出了一种基于众包模式的移动警情系统,移动端采用ArcGIS Runtime SDK forAndroid接口进行二次开发。移动端通过无线网络实现与服务器端的数据通信以及移动端之间的警情信息共享,最终达到“人人为警”的目的。
关键词: 众包模式;Android;ArcGIS Server;移动警情
0 引言
众包是2006年由美国《连线》杂志作家、资深编辑杰夫·豪(Jeff Howe)首次提出的[1]。众包模式是指能吸引公众的参与,收集公众建议,吸纳集体智慧。众包是一种分布式的问题解决和生产模式。在地理空间行业,众包系统是一种由用户贡献并且是自下而上的自发式地理信息[2],其数据是由大量非专业人员志愿获取并通过互联网向大众或相关机构提供的一种开放地理空间数据[3-4]。代表性的众包地理数据有GPS路线数据(如OpenStreetMap,简称OSM)、用户协作标注编辑的地图数据(如Wikimapia)、各类社交网站数据(如Twitter、Facebook、微博等)、街旁用户签到的兴趣点数据等[5]。通过分析现有的警情通报方式[6],发现存在警情信息无法实时获取、地理位置无法直观体现等问题。为解决这些问题,本文把警情信息作为一种众包地理数据,结合众包模式和移动应用的特点,设计和实现了移动警情系统。
1 建设目标
移动警情系统的建设需要综合警情通报的业务特点,结合LBS理论、计算机网络、无线通信、数据库等技术构建基于众包模式的移动警情系统,为警情信息的获取和共享提供一个全面的解决方案。具体包括以下五个方面:(1)提供电子地图服务。(2)提供移动位置服务。(3)警情信息采集服务。(4)提供警情信息提醒服务。(5)应急路线规划服务。
2 系统设计
2.1 移动警情系统网络拓扑架构
移动警情系统的网络拓扑结构如图1所示。
2.2 数据管理和交互
移动警情系统的数据管理分为移动端的数据管理和服务器端的数据管理两个部分。本系统移动端采用轻量级SQLite数据库存储和管理数据。服务器端采用MySQL数据库来模拟后台数据,并进行数据的相关操作。基本数据分为3类:警情信息、位置信息、文档和附件,如表1所示。警情数据库表设计和字段说明如表2所示。
系统数据交互过程是:首先服务器端实现相关的业务数据的逻辑处理,比如相关信息数据的读取、更新、导入和修改,以及把数据库中的数据系列化为xml或json格式。然后移动终端通过网络连接服务器,在数据库中进行数据的查询、存储或修改,最后将所需数据返回给移动终端,完成数据交互。
2.3 功能设计
功能设计如图2所示。
3 关键模块实现
本系统以ArcGIS Server和Android为开发平台,在Eclipse开发环境中,针对移动警情的业务流程,使用Java语言基于ArcGIS Runtime SDK for Android的接口进行开发。系统后台空间数据服务采用ESRI的ArcGIS Server平台发布基础地形服务,并使用ArcGIS Server切片缓存技术对基础地形服务进行切片,实现移动端对空间数据的快速访问。
3.1 地图服务
地图服务主要实现三个功能:电子地图功能、定位功能、地址查询功能,具体使用到的方法如图3所示。
(1)电子地图功能
电子地图功能是实现放大、缩小、平移,以及手触摸式的放大缩小、卫星/交通图显示等功能。主要调用zoomin(放大)、zoomout(缩小)、zoomToScale(地图级别设置)、getRotationAngle(地图旋转)和setVisble(不同图层显示)五个方法。
(2)定位功能
定位功能就是用户通过移动设备获取位置信息(经纬度)并在地图上展示的功能。系统主要通过两种方式获取到定位服务,一是通过点击“定位”按钮触发定位事件,二是通过移动设备的位置更新触发定位事件。具体为:MapView通过调用getLocationService方法获取一个LocationService定位服务,通过这个LocationService定位服务可以开启/关闭GPS,设置一些有用的属性。同时通过setLocationListener方法来监听位置的变化。
(3)地址查询
地址查询是用户通过地址名(物理地址名)获取到位置信息(经纬度)并在地图上渲染的过程。地址查询功能的实现过程是实现searchAddress和handleSearchAddress两个方法,其中handleSearchAddress方法会通过调用ArcGIS Server Geocoding Services实现地理编码功能,获取到位置信息,并最终在地图上渲染。
3.2 警情报告服务
警情报告是用户采集警情,并在地图上实时标注的功能。要使用到一个客户端的要素图层GraphicsLayer,以及PictureMarker Symbol这个符号类。GraphicsLayer是ArcGIS Runtime for Android中比较重要的图层类型,也是使用最为频繁的一个。GraphicsLayer可以包含一个或多个Graphic对象,查询的返回结果和标注的Graphic数据都要通过它呈现。警情报告主要用到图4所示的方法。
图4中,首先调用centerAt()方法在地图上绘制定位点的位置信息;其次通过getDrawable()方法,获取警情对应的图标资源;最后通过addGraphic()方法将警情标注到地图上,同时与服务器进行同步。
3.3 警情提醒服务
警情提醒服务实现附近警情信息推送,当用户启用应用并开启定位设备时,即可使用警情信息的推送服务。用于限定并进行警情信息过滤的条件主要有三个:经度、纬度、半径。将此三个要素作为过滤方法getEventInfo()的输入参数,并将符合条件的警情信息作为输出参数,即:
public static String[][]getEventInfo(double lat, double lon,int radius){};
通过三个规则限定条件,从服务器获取警情信息,并将信息置于类型为JOSNArray的stationJsonArray变量中。将stationJsonArray变量的长度作为info数组的长度,并将stationJsonArray变量中所包含的内容一一赋值给info数组,并作为getEventInfo()方法的返回值。
3.4 应急路线规划服务
应急路线规划功能是通过用户输入出发地和目的地即避难场所,进而由服务器规划最佳前往路线的过程。主要通过arcgisonline上已经发布的网络分析服务实现。执行路径分析可以通过RoutingTask类的solve方法来进行,通过给slove方法传递RoutingParameters类型的参数,即可以实现最短路径的查找。
4 结束语
随着社会的发展、科技的进步,人们对信息的需求进一步提高,特别在我国这样一个人口数量庞大的国家,公众的生活安全越来越重要。本文设计实现的系统具有地图服务、警情报告、警情提醒服务、应急路径规划服务等功能。系统达到了“人人为警”的设计目标,并具有良好的体验效果。
参考文献
[1] HOWE J. The rise of crowdsourcing[J]. Wired magazine, 2006,14(6):1-4.
[2] 付品德,孙九林.WebGIS原理与应用[M].北京:高等教育出版社,2012.
[3] HEIPKE C. Crowdsourcing geospatial data[J]. ISPRS Journal of Photogrammetry and Remote Sensing, 2010,65(6): 550-557.
[4] GILES J. Wikipedia rival calls in the experts[J]. Nature, 2006,443(7111):493-493.
[5] 单杰,秦昆,黄长青,等.众源地理数据处理与分析方法探讨[J].武汉大学学报(信息科学版),2014(4):390-396.
[6] 彭拥兵.论警情通报制度的价值[J].福建公安高等专科学校学报,2005(2):30-32.