SuperMap流数据技术及应用实践

版权声明:本文为博主原创文章,欢迎转载,SuperMap技术问答社区 http://ask.supermap.com https://blog.csdn.net/supermapsupport/article/details/85007243

1. SuperMap流数据技术

       SuperMap流数据技术方案基于Spark生态体系的Spark Streaming 流处理技术框架,适合于处理流数据、历史数据等相关场景,并保证处理的容错性。SuperMap流数据方案将从流数据接入、流数据分析处理、流数据存储、流数据输出和流数据可视化实现物联网领域全流程的产品形态和技术支持。
在这里插入图片描述

1.1. 流数据接入

       SuperMap iServer流数据服务(Steaming Service)可以非常快速的接入常见的流数据源,包括各类移动终端、监控传感器、GPS设备等。iServer Streaming Service的接收器(Receivers)负责流数据的接收,系统提供针对不同数据格式的解析能力(Reader)和多种传输协议(Transport)的处理能力,同时可以将Reader和Transport进行组装实现可变换的接收器。
       iServer Streaming Service的接收器支持CSV、TXT、JSON、GeoJSON等常用数据格式,支持Socket、HTTP、JMS、Kafka等主流数据传输协议。同时iServer默认预配置了4种输入连接器提供各类数据接入,包括消息订阅、文件导入、HTTP轮询和WebSocket接入。
在这里插入图片描述

1.2. 流数据分析处理

       针对海量流数据的处理和分析,iServer Streaming Service提供了非常强大和丰富的实时分析处理工具,包括属性过滤器、空间过滤器(地理围栏)和转换器函数。
       属性过滤器
       属性过滤器用来基于属性表达式过滤地理事件。iServer提供了数值字段属性过滤和文本字段属性过滤。数值字段属性过滤支持常用的数值比较运算大于、小于、等于,如“[speed]>120”,也支持复杂组合使用,如“([x] >= -180 && [x] <= 180) && ([y] >= -90 && [y] <= 90) ”,以及支持类SQL的关键字,如“[mmsi] in (355460000, 412416015, ……) ”。文本字段属性过滤支持正则表达式,如“ [content] matches CCA[0-9]{4}”。
       空间过滤器
       空间过滤器可以基于空间关系过滤实时地理行为。iServer提供了包含、相离等空间关系过滤支持,如当前点是否在地理围栏内
在这里插入图片描述
       转换器函数
       变换器函数用来进行流数据日常处理。iServer提供字段相关转换器和地理位置转换器两种类型。其中字段转换器包括数值计算如“[ longitude ] / 600000”、字段映射如“[x] = [ latitude ] / 600000”和字段添加如“[ receivertime ] = currentTime()”能力支持。
       iServer支持地理围栏,主要对实时流数据动态判断哪些目标落入空间范围(围栏)内,支持计算的进入、保持、退出等细化的状态。
在这里插入图片描述
       地理位置转换支持动态目标与地理围栏的实时地理状态标记。iServer支持实时动态目标初始位置状态(如下图T0),与地理围栏相离已记录的位置状态(如下图 T1),即将进入地理围栏位置状态(如下图 T2),已经进入地理围栏位置状态(如下图 T3),即将离开地理围栏位置状态(如下图 T4)。
在这里插入图片描述
       流数据实时处理的性能主要受输入源及计算节点数目的影响,如下图。我们采用全球民航客机进出全球3,455个机场面的情况进行性能测试。集群和性能情况如下(性能单位 e/s ,事件/秒):在相同的测试环境下,通过对来源于Socket、Kafka、File等的三种数据,实时计算民航客机进出围栏的情况。经过对比发现磁盘文件的处理是最快的,其少了网络的传输,以及不同节点间的数据交换。对于Socket、Kafka网络通讯协议可以通过增加传输通道来提升性能。
在这里插入图片描述
       另外,通过多个通道,测试不同计算节点下的性能表现。在处理相同的输入数据时,随着节点的增加,性能线性提升;在相同节点时,数据增加,性能不会呈指数下降。
在这里插入图片描述

1.3. 流数据存储

       SuperMap iServer流数据服务基于iServer的Datastore实现流数据的高效存储,主要依赖于DataStore的Elasticsearch分布式流数据库,实现实时搜索、稳定、可靠、快速的功能需求。用户可以将流数据处理后的数据或者历史数据存储在DataStore中,通过流数据库的高效实时搜索能力,充分挖掘历史数据的价值,如针对历史数据实现轨迹回放、时间轴播放等。
在这里插入图片描述

1.4. 流数据输出

       SuperMap iServer流数据服务可以在SuperMap各个端产品中动态跟踪相关目标,也可以对目标的位置变化行为进行告警或者通知。iServer通过输出连接器将实时流数据输出,包括输出到iServer DataStore实现历史数据存储;以消息方式实现输出;通过DataFlow Service以WebSocket的方式向客户端发送流数据,为SuperMap iClient实现流数据可视化提供技术基础。
在这里插入图片描述

1.5. 流数据可视化

       SuperMap iServer流数据服务可以将实时流数据输出接入到SuperMap各个端产品实现实时动态显示,用户可以直观的查看某一时刻当前目标数据的运行位置状态。
在这里插入图片描述
       用户也可以将更多的实时目标数据进行动态网格聚合显示,更适合海量多目标数据展示,通过不同的各位颜色饱和度以及范围包含数字直观表达流数据状态。
在这里插入图片描述
       同时也可以通过空间聚集状态实现密度分布和热度分布等可视化表达。
在这里插入图片描述

2. SuperMap流数据应用实践

       本节沿用基于单机SuperMap iServer环境,为读者介绍流数据处理的整个过程。所使用到的工具和前端展示代码请提前至超图软件官网进行下载 。
       如下图所示,通过模拟器定时读取CSV文件,将读取的信息发送给SuperMap iServer流数据服务(Streaming Service)。该服务将分析处理结果向SuperMap iClient客户端进行广播,当SuperMap iClient客户端订阅流数据服务后,即可自动接收服务器推送的数据。
在这里插入图片描述
       为了便于读者在本地模拟流数据处理过程,我们提供了流数据发送模拟器 (File2WebSocket.bat),通过模拟器直接从提供的数据中读取全球航班实时位置数据 (flights2w.csv)模拟流数据产生应用场景,该数据以“,”逗号分隔,其中包含航班旋转角度、航班号、航班当前时间的经纬度信息。
在这里插入图片描述

2.1. 流数据处理流程

2.1.1. 模拟发送流数据

(1)读者可以使用记事本打开File2WebSocket.bat文件
WebSocketServer.exe 8181 127.0.0.1 ./flights2w.csv 1000 2000
参数解释:
       8181:WebSocket服务端口。
       127.0.0.1:IP地址,因为是单机环境,填写本机地址即可。
       ./flights2w.csv:发送文件路径。
       1000:间隔时间(单位:毫秒)。
       2000:间隔时间内发送多少条。
(2)编辑完成后,双击运行File2WebSocket.bat(如下图),可以看到发送的服务地址为:ws://127.0.0.1:8181
在这里插入图片描述

2.1.2. SuperMap iServer配置流数据处理服务

(1)确认SuperMap iServer已启动并已配置完分布式分析服务。
(2)如下图,使用浏览器访问http://localhost:8090/iserver/manager,登陆SuperMap iServer管理页面,点击【服务】 -> 【概述】 -> 【配置流数据服务】。
在这里插入图片描述
(3)将“接收器”中“WebSocket接收器”,用鼠标拖到“节点编辑器”中。鼠标单击“节点编辑器”中的“WebSocket接收器”。“接收数据格式”选择“CSVFormatter”,“元数据”选择“StreamingMetadata”,“WebScoket服务地址”填写“ws://127.0.0.1:8181”。
在这里插入图片描述
(4)点击 “元数据”上的“StreamingMetadata”标签,在随后显示的页面中,“epsg”填写“4326”,“id字段名”填写“id”,“接收数据类型”选择“POINT”。由于原数据中有4个字段,所以“字段信息”添加4个FieldInfo。
在这里插入图片描述
(5)点击“FieldInfo-0”标签,根据航班数据内容,
78,UAL2831,-168.78334,52.16667
从“FieldInfo-0”到“FieldInfo-3”依次填写以下内容,填写完成后,点击检查并返回。
在这里插入图片描述
在这里插入图片描述
(6)将鼠标放到“元数据”的“StreamingMetadata”标签上,可以看到上一步的详细配置信息,确认信息无误后,点击“检查并返回”按钮。
在这里插入图片描述
(7)将“接收器”中的“WebSocket发送器”用鼠标拖到“节点编辑器”中(图9-42),鼠标单击“节点编辑器”中的“WebSocket发送器”,“结果信息格式”选择“GeoJsonFormatter”,“WebSocket服务地址”填写如下内容。
ws://127.0.0.1:8800/iserver/services/dataflow/dataflow/broadcast?token= VBqfynfk1xoY87wXauNtHG9_qZUkj7SfBwEEwHV2AJVxlHlyMMprHTeK-DuSCxzYMEPGMbr-yz6oANMe-hjKog…
其中Token是需要申请的,填写完成后“点击检查并返回”。
在这里插入图片描述
(8)拖拽“节点编辑器”中的“WebSocket接收器”右侧的绿色方块,将拖出的箭头指向“WebSocket发送器”,命名为“flights2wDemo”,点击“发布”即可发布流处理模型,发布完成后显示流数据处理服务基本信息。
在这里插入图片描述
(9)打开模拟发送流数据窗口,可以看到数据在实时进行信息推送,访问Apache Spark地址:http://localhost:4040/jobs/,查看Apache Spark运行状态是否正常。
在这里插入图片描述
(10)返回SuperMap iServer【首页】 -> 点击【快速发布一个或一组服务】 -> 数据来源选择【数据流】 -> 服务名填写“dataflow”,此处名称与“WebSocket发送器”中WebSocket服务地址定义的名称一致。
在这里插入图片描述
在这里插入图片描述
(11)发布完流数据处理服务后,点击发布完成后界面上的“超链接”地址“dataflow/dataflow” -> 点击“subscribe” -> 点击“订阅”按钮,就能看到模拟器推送过来的详细数据内容。下一步我们将使用web客户端进行展示。
在这里插入图片描述
在这里插入图片描述

2.2. 流数据可视化展示

(1)将下载材料中的流数据可视化示例代码文件dataflowLayer.html ,使用文本编辑器打开,修改Token值,这里的Token值与配置的“WebSocket发送器”中WebSocket服务地址Token完全相同。
var token = “VBqfynfk1xoY87wXauNtHG9_qZUkj7SfBwEEwHV2AJVxlHlyMMprHTeK-DuSCxzYMEPGMbr-yz6oANMe-hjKog…”;
在这里插入图片描述
(2)将修改后的dataflowLayer.html与plane.png 两个文件复制到%SuperMap iServer_HOME%\iClient\forJavaScript\examples\openlayers目录下,使用浏览器打开dataflowLayer.html文件,就可以实时监控飞机所在位置与角度。
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/supermapsupport/article/details/85007243
今日推荐