◆谈帅 罗尊骅
基于WebGIS北斗车辆监控系统的关键技术研究与系统设计
◆谈帅 罗尊骅
(江苏省测绘研究所 江苏 210013)
目前智慧城市时空大数据平台对感知数据的监测、分析与应用能力亟待提升,据此本文以北斗车辆监控系统的设计与开发为落脚点,对实时数据应用系统中具有代表性的两个关键技术问题“实时地理信息数据发布与接入”以及“监控规则与地理围栏的动态创建”进行了研究,并借助ArcGIS GeoEvent Server的基础能力进一步扩展,提出两个关键技术的解决方案。最终,设计并实现了基于WebGIS的北斗车辆监控系统。该系统具有车辆实时状态统计图展示功能、实时信息空间可视化功能、车辆管理、车辆监控管理等功能。它能够持续监控并记录车辆行为,车辆违规时第一时间以短信、邮件方式通知相关人员,有效提高了车辆管理能力。本文从技术研究以及系统设计与实现两个方面进行了讨论,为实时感知数据应用的开发提供了技术参考。
实时数据;大数据;车辆监控;WebGIS;ArcGIS GeoEvent Server
《智慧城市时空大数据平台建设技术大纲(2019版)》[1]在时空大数据方面将原有四类数据面向智能化需求和本地特色进行扩展,形成现有的五类数据,即基础时空数据、公共专题数据、物联网实时感知数据、互联网在线抓取数据和根据本地特色扩展数据,明确提出了“要利用空、天、地一体化对地观测传感网实时获取的基础地理信息数据和依托专业传感器感知的、可共享的行业专题实时数据”的要求。因此,智慧城市时空大数据平台对感知数据监测、分析、应用能力亟待提升。
基于实时定位数据的车辆监控系统是智慧城市时空大数据平台的重要组成部分,具有车辆违章监控、辅助作业车辆调度等能力,不管是在日常车辆管理或抢险救灾场景下都能发挥巨大作用[2-3]。2020年6月23日,北斗三号组网部署的最后一颗卫星的发射成功标志着北斗全球系统定位系统全球星座部署圆满完成。北斗系统具有自主性、国产化的特点,能提供高质量、高精度的实时空间定位数据,是“空、天、地”感知网的重要组成部分,基于北斗数据的车辆监控系统具有巨大的社会、经济效益[4]。
因此,本文以北斗车辆监控系统为落脚点,对实时数据应用的关键技术进行研究,设计并实现了一个基于WebGIS的实时车辆监控系统,旨在为智慧城市时空基础设施的全面应用积累经验,为全省新型基础测绘、政府部门相关时空大数据及地理信息应用提供技术参考。
本文使用ArcGIS GeoEvent Server(简称GE),在其实时数据处理能力的基础上进行扩展与开发。开发主要面临两个问题:(1)纷繁复杂的数据源类型如何接入的问题。(2)系统运行中,监控规则与地理围栏如何动态创建的问题。
针对上述问题,本文提出了相关解决方案,为基于WebGIS的北斗车辆监控系统设计与实现打通关键技术环节。
GeoEvent Server(简称:GE)是ESRI地理空间云中的组成部分,提供实时流数据的态势感知能力,为在地图上访问、分析、显示分析实时数据以及物联网数据提供支持,同时能实时监测、及时响应,第一时间发出警报[5]。
GE的流数据处理能力以服务的形式提供,每个服务都包含从数据流输入、过滤、处理到输出的完整事件流,每个流程分别对应着GE中的输入连接器(Input Connector)、过滤器(Filter)、处理器(Processor)、输出连接器(Output Connector)这四个组件。输入连接器用于接收和解释来自数据源的事件数据,它是事件流的起点,每个GE服务都需要包括一个以上的输入连接器;过滤器用于根据空间和属性从数据流中移除不满足条件的数据;处理器使用对流数据进行特定的操作,包括字段处理、空间计算、投影等GIS处理能力;流程最后通过输出连接器将完成处理的事件数据以预期的格式以及方式实时传送给使用者,包括地理信息流服务、邮件、短信等方式。
虽然GE提供了实时数据处理的基础能力,但尚不能结合具体业务需求落地形成一套完整的技术方案,其中关键技术问题包括:“实时地理信息数据发布与接入”和“监控规则与地理围栏的动态创建”。
实时地理信息数据源的数据体量大、产生时间密集且形式种类繁多,具有海量性、多样性、高速性、持续性的特点。实时地理信息数据源的接入包括轮询与订阅两种方式,轮询是按照一定的时间频率主动的方式向实时数据的提供方进行请求,数据源被动推送数据。而订阅的方式是由数据源主动推送数据,客户端不需要进行主动请求。
采用轮询的方式需要客户端使用定时器与服务端进行异步通信,对服务端开发要求较低,但同时带来了大量的问题:(1)密集的数据访问会对服务器以及数据库造成巨大的压力以及资源消耗。(2)数据获取时间滞后,时效性不强。(3)由于轮询时间间隔的原因,不同的用户可能会看到不同的数据,数据一致性弱。总体而言,轮询的方式资源消耗大、实时性较低、用户体验较差不能算是实时地理数据发布的最佳方式。
订阅模式基于数据主动推送与及时分发技术,WebSocket属于重要的技术实现之一。WebSocket是一种在单个TCP连接上进行双工通讯的应用层协议,允许服务端主动发送信息给客户端,长连接机制能有效降低资源消耗、保证数据高时效性以及客户端数据的一致性。在数据量大、并发性高的情况下,消息中间件技术可以保障数据的完整性、实时性以及大吞吐量。Kafka 是以时间复杂度 O(1)的方式提供消息持久化服务,支持离线数据处理和实时数据处理,在海量数据处理领域被广泛使用。
综上,本研究决定以WebSocket通信方案以及Kafka消息中间件两种方式作为北斗车辆数据的数据发布方案,进行实时数据发布服务的开发。在GE的实时数据接入方面,利用Java对GE进行扩展开发,实现WebSocket和Kafka两种输入连接器。
监控功能中的规则设置尤为关键。北斗车辆监控系统中不但需要用户可以自定义属性规则以及在线创建、编辑地理围栏,而且要求针对不同的车辆设置不同的规则,但是原生的GE并不能满足上述功能的需求。因此本文在GE的基础上提出并实现了动态规则创建以及不同车辆与不同规则匹配的解决方案。
属性规则的创建利用了GE中的过滤器组件(filter),对符合条件的数据进行筛选进入下一步的数据输出反馈。每个监控创建时由系统默认生成的uuid作为组件的名称,由系统用户所填写的监控名称作为标签(label),条件(conditions)作为条件参数。结合上述三个参数调用GE服务更新接口即可动态创建属性规则(如图1)。
图1 属性监控动态创建流程
空间监控即地理围栏,包括4种空间事件:INSIDE、OUTSIDE、ENTER、EXIT,事件触发后即可根据规则做出反馈(如图2)。地理围栏的创建利用的是GE中的处理器(Processor)组件,本文利用地理标记器(GeoTagger)组件自动更新地理围栏的方式进行处理,通过设置围栏的自动同步规则,使围栏自动与所设置的要素服务(FeatureServer)同步,将围栏的动态“增、删、改、查” 转变为对要素服务图形的编辑,只要借助ArcGIS API for JavaScript在线编辑接口,即可在浏览器端对要素服务进行增删改查的操作,从而实现了空间监控的交互式动态创建。
图2 地理围栏监控触发机制
而车辆与规则的多对多关系本文则采用正则法则进行匹配,正则条件为MATCHES.*(ruleid1,ruleid2).*,属性监控的条件会根据车辆系统中设置的各项属性动态生成,将其动态拼接在过滤器的条件框中,并默认采用AND方式连接各个条件,该方法决定了在车辆系统创建的单个监控规则中,所有的条件都是“与”的关系。如果需要条件关系为“或”需要通过创建多个规则来实现。
基于北斗的车辆监控系统由信号传输模块、监控中心和应用终端构成,系统架构如图3所示,功能结构图如图4所示。
图3 北斗车辆监控系统架构
(1)信号传输模块:车辆通过内置的北斗卫星定位车载终端获取北斗定位实时数据,通过移动通信网络与监控中心进行信号传输,为车辆监控提供实时数据。
(2)监控中心:由通信中间件、数据库服务器、GE Server、地图服务器、Web服务器、短信/邮件服务器组合而成。其中通信中间件包括WebSocket服务端、Kafka服务端,负责转发北斗车辆实时信息。数据库服务器包括:车辆管理业务数据库,用于存储车辆相关静态信息、监控规则;地理信息数据库,用于持久化北斗实时位置数据。GE Server负责对实时数据进行监控,根据监控规则进行反馈,反馈结果通过地图服务器、短信/邮件服务器分别实现了实时数据“上图”,并且可以通过手机、邮件两种形式第一时间对管理员进行通知。综合上述能力,最终,通过Web服务形式综合为前端单页应用。
(3)应用终端:用户可以在浏览器端访问应用,进行车辆监控与管理,满足车辆在线实时监控的需求。
图4 北斗车辆监控系统功能结构图
数据方面,系统采用真实北斗监控历史数据,数据来源于江苏北斗卫星应用产业研究院有限公司提供的2016年部分北斗车辆监控数据和视频数据,其中车辆监控数据记录19993003条,约300G,利用该历史数据,采用推送的方式模拟实时北斗数据的数据源。
系统实现方面,本文针对GE Server基于Java开发了WebSocket和Kafka两种输入连接器;基于Java进行了通信中间件WebSocket服务器以及Kafka Producer 服务器的开发;地图服务器采用了ArcGIS Server;Web服务器的开发基于SpringBoot;前端Spa应用开发基于React及Arcgis API for JavaScript。最终,实现了B/S架构的北斗车辆监控系统的车辆实时状态统计图展示功能、实时信息空间可视化功能、车辆管理、车辆监控管理等功能。
车辆实时展示功能位于系统首页,如图5,为用户提供车辆监控状态总览,并分别按车辆当前所在省份统计车辆数量、按不同速度区间统计车辆数量、按车辆类型统计车辆数量。
图5 车辆实时状态统计页面
地图浏览模块即“地图展示”除展示车辆实时位置外还包含地图基本操作、图层管理、兴趣点查询三个部分,旨在对实时车辆信息进行基于地图的空间可视化。
用户可以在地图界面浏览车辆实时分布状态以及移动过程,如图6,系统也支持放大、缩小、底图切换、空间量测等在线地图的基础功能。
图6 车辆实时位置分布状态页面
同时,用户可以通过车辆查询周围兴趣点,或者以某个兴趣点为中心查询周围5km范围内的车辆,为车辆在线调度提供支持,如图7所示。
图7 车辆位置与兴趣点互查页面
车辆管理模块包含车辆注册、车辆查询、历史轨迹查询三大主要功能。
系统中接受管理与监控的车辆需要先进行注册,需登记包括车辆单位、车牌等属性,通过注册后的车辆根据权限即可加入系统的监控序列中,只有完成注册的车辆才会列入系统查询、监控范围。
车辆查询是指用户通过输入车辆管理单位、车牌等条件等进行条件查询,查询结果在地图上高亮显示。并且,用户还可以查看目标车辆的历史运行轨迹,并可以将历史轨迹以URL形式进行分享,如图8所示。
图8 车辆历史运行轨迹与分享页面
图9 车辆地理围栏创建界面
该功能模块主要功能是对车辆的属性监控规则以及空间监控规则的配置。首先在地图展示模块中以勾画的方式创建地理围栏(如图9),并在车辆监控管理模块中填写属性规则并选择创建好的围栏(如图10),最后选择警报信息接收人,并选择邮件或短信报警通知方式(如图11),完成监控规则配置后系统将持续不断的监控车辆行为。若有监控车辆出现符合违反监控规则的情况,系统将立刻以短信或者邮件的方式通知责任人,帮助他第一时间做出响应。
图10 监控规则创建页面
图11 接收人与报警信息推送方式管理界面
本文以提升对实时感知数据监测、分析、应用能力的探索为初衷,以开展北斗实时车辆监控系统的研究与开发为落脚点,对比较具有代表意义的两个关键技术“实时地理信息数据发布与接入”、“监控规则与地理围栏的动态创建”进行了研究并提出了解决方案,并在此基础上实现了一个具有车辆实时状态统计图展示功能、实时信息空间可视化功能、车辆管理、车辆监控管理等功能有B/S架构的北斗车辆实时监测系统。在后续的研究中,需要从实时大数据动态可视化角度进一步提升系统可视化水平,从系统优化角度进一步提高系统性能,继续为智慧城市时空基础设施的全面应用积累经验、提供技术参考。
[1]国家测绘地理信息局. 智慧城市时空大数据与云平台建设技术大纲(2019版)[S].
[2]鲍骏. 基于北斗定位的车辆监控系统的研究[D]. 南京理工大学,2014.
[3]卢丽敏. 基于北斗定位技术的车载监控系统设计与研究[D]. 2014.
[4]张向南,赵庆展,何启峰,等. 基于北斗的物流车辆监控系统[J]. 物流技术,2015,34(008):251-254.
[5]Amiruddin,Maneesa S . Real-time Web GIS to monitor marine water quality using wave glider[J]. Iop Conference, 2016,37:012074.