zoukankan      html  css  js  c++  java
  • 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/ 如发现有错,请留言,谢谢)

  • 相关阅读:
    判断JS数据类型的四种方法
    JavaScript正则表达式精简
    virtio介绍
    DPDK与SRIOV应用场景及性能对比
    KVM和Xen的区别
    理解 JavaScript 闭包
    JS数组常用操作方法总结
    JavaScript中的 NaN 与 isNaN
    如何在Unity中复制多个组件并粘贴到另一个GameObject上
    Unity Umotion 导入动作发生漂移的解决办法
  • 原文地址:https://www.cnblogs.com/zhangyongli2011/p/12758360.html
Copyright © 2011-2022 走看看