SuperMap流数据应用技术方案

流数据应用技术方案针对流数据应用场景,针对流数据的海量、多源、持续等特征,进行持续地获取相关的动态位置,以及持续地分析、处理和挖掘。
本章沿用基于单机SuperMap iServer环境,介绍流数据处理的整个过程。所使用到的工具和前端展示代码请提前进行下载

iServer软件下载地址(本文使用10.0.1 win64位):
http://support.supermap.com.cn/DownloadCenter/DownloadPage.aspx?id=1203

模拟流数据下载地址:

https://share.weiyun.com/50VnG4Z 密码:vx2d03

一、总体流程

通过模拟器定时读取CSV文件,将读取的信息发送给SuperMap iServer流数据服务(Streaming Service)。该服务将分析处理结果向SuperMap iClient客户端进行广播,当SuperMap iClient客户端订阅流数据服务后,即可自动接收服务器推送的数据。

为了便于读者在本地模拟流数据处理过程,我们提供了流数据发送模拟器(File2WebSocket.bat),通过模拟器直接从提供的数据中读取全球航班实时位置数据(flights2w.csv)模拟流数据产生应用场景,该数据以“,”逗号分隔,其中包含航班旋转角度、航班号、航班当前时间的经纬度信息。

78,UAL2831,-168.78334,52.16667
62,MHO220,-155.78334,19.93333
48,ANZ28,-175.56667,-28.65
40,UAL99,-167.63333,-10.75
80,KAL35,-178.34415,43.22642
49,UAL870,-172.14999,-11.08333
80,AAL176,-177.64999,43.31667

二、流数据处理流程

2.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.2 SuperMap iServer配置流数据处理服务

(1)确认SuperMap iServer已启动并已开启本地Spark分布式计算集群,并将本机加入集群,勾选“报告器是否启用”与“是否分布式分析节点”


(2)使用浏览器访问http://localhost:8090/iserver/manager,登陆SuperMap iServer管理页面,点击【首页】 -> 【快速发布一个或一组服务】

填写服务名为dataflow点击下一步发布完成(这里名称必须与后面流模型配置相符)

(3)点击【服务】 -> 【概述】 -> 【配置流数据服务】。

(4)将“接收器”中“WebSocket接收器”,用鼠标拖到“节点编辑器”中。鼠标单击“节点编辑器”中的“WebSocket接收器”。“接收数据格式”选择“CSVFormatter”,“元数据”选择“StreamingMetadata”,“WebScoket服务地址”填写“ws://127.0.0.1:8181”


(5)点击“元数据”上的“StreamingMetadata”标签,在随后显示的页面中,“epsg”填写“4326”,“id字段名”填写“id”,“接收数据类型”选择“POINT”。由于原数据中有4个字段,所以“字段信息”添加4个FieldInfo。

(6)点击“FieldInfo-0”标签,根据航班数据内容,

78,UAL2831,-168.78334,52.16667

从“FieldInfo-0”到“FieldInfo-3”依次填写以下内容,填写完成后,点击检查并返回。

字段信息 字段名称 字段来源 字段类型
FieldInfo-0 direction 0 INT32
FieldInfo-1 id 1 TEXT
FieldInfo-2 x 2 DOUBLE
FieldInfo-3 y 3 DOUBLE




(7)将鼠标放到“元数据”的“StreamingMetadata”标签上,可以看到上一步的详细配置信息,确认信息无误后,点击“检查并返回”按钮。

(8)将“接收器”中的“WebSocket发送器”用鼠标拖到“节点编辑器”中,鼠标单击“节点编辑器”中的“WebSocket发送器”,“结果信息格式”选择“GeoJsonFormatter”,“WebSocket服务地址”填写如下内容。

ws://127.0.0.1:8800/iserver/services/dataflow/dataflow/broadcast?token=sTVZbj6ivkvrX9gcSbYlgpdaZpj97RenP49MIUDQl3bS1Jmjgz9ToaeFf0jaXKbPlE0rUnY3YbXPekG0sFwjkA..

其中Token是需要申请的,访问http://localhost:8090/iserver/services/security/tokens,填写完成后“点击检查并返回”


(9)拖拽“节点编辑器”中的“WebSocket接收器”右侧的绿色方块,将拖出的箭头指向“WebSocket发送器”,命名为“flights2wDemo”,点击“发布”即可发布流处理模型,发布完成后显示流数据处理服务基本信息。

(10)打开模拟发送流数据窗口,可以看到数据在实时进行信息推送,访问Apache Spark地址:http://localhost:4040/jobs/, 查看Apache Spark运行状态是否正常。

(11)发布完流模型后,点击【服务】->【服务管理】->【数据流服务】点击dataflow“超链接”

点击服务地址

点击“subscribe”

点击“订阅”按钮,就能看到模拟器推送过来的详细数据内容。

下一步我们将使用web客户端进行展示。

三、Web客户端展示

(1)将下载材料中的流数据可视化示例代码文件dataflowLayer.html,使用文本编辑器打开,修改Token值,这里的Token值与配置的“WebSocket发送器”中WebSocket服务地址Token完全相同。

(2)将修改后的dataflowLayer.html与plane.png文件复制到%SuperMap iServer_HOME%iClientforJavaScriptexamplesopenlayers目录下,使用浏览器访问http://localhost:8090/iserver/iClient/forJavaScript/examples/openlayers/dataflowLayer.html,就可以实时监控飞机所在位置与角度



(转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢)

原文地址:https://www.cnblogs.com/zhangyongli2011/p/12758360.html