一、背景
在GIS系统建设中,经常遇到对实时位置数据接入与展现的需求,比如车辆位置、实时航班、人员位置等,此类数据多以流数据的形式存在,如何对接多种来源的实时数据,如何实时推送至WEB前端?
二、技术方案
接下来我们选定SuperMap iServer实现实时位置数据(流数据)的接入、推送、展示
①流数据服务:实现流数据在iServer端的接入,比如socket、kafka等
②数据流服务:实现将数据以websocket形式推送至客户端
③客户端展示:客户端订阅websocket,实时接收数据更新
三、流数据接入
iServer流数据服务支持接入如下数据:Socket、WebSocket、Http、文件系统(CSV等)、kafka、JMS。在此,我们选择kafka作为数据来源。
使用流数据服务之前,需要先开启Spark集群,可以直接使用iServer内置的Spark来搭建集群,也支持既有的Spark集群,在此我们使用iServer内置的Spark来搭建集群。
①开启Spark集群:登陆iServer,集群》配置集群》启用分布式集群》启用本机Spark集群
②加入Spark集群:集群》加入集群》集群地址改为本机》勾选分布式分析节点和报告器
③配置流数据服务
④配置kafka接收器:接收kafka数据
配置kafka连接信息及数据内容:接收数据格式、元数据、kafka服务器地址、topic数组、groupID
配置kafka数据元信息:epsg(多为4326,即wgs84),id字段(唯一标识)、数据类型(支持点、线、属性等,多为点)、字段信息(源字段映射关系)
⑤配置websocket发送器:将数据推送至客户端
结果信息格式设置为GeoJsonFromatter
填入Websocket服务地址,包含令牌信息(具体参考第四步中数据流服务发布)
四、数据推送至前端
iServer接收了kafka数据后,需要通过WebSocket以广播的形式推送至浏览器端,实现前端系统的实时展示,在此通过iServer数据流服务实现
①发布数据流服务:服务》概述》快速发布服务》数据流》指定服务名称
②订阅测试:通过数据流服务页面订阅,测试数据是否正常接入
五、前端展示
iServer通过流数据和数据流服务实现了kafka数据的接入,websocket消息的广播,接下来需要浏览器端接收订阅消息并进行实时位置及状态展示。
途径一:使用SuperMap客户端SDK对接数据流服务,可直接实现数据解析展示与上图,具体可参考范例及API
途径二:自行开发直接对接数据流服务(即WebSocket),更加灵活的实现数据的解析与展示
后记
到此,我们基于iServer实现流数据的接入与展现,我们能够实现位置数据在地图上的实时展现,后续我们将介绍实时位置展示的另一个场景:电子围栏。