博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
流数据分析之地理围栏应用
阅读量:4162 次
发布时间:2019-05-26

本文共 5020 字,大约阅读时间需要 16 分钟。

作者:LX

背景

在前面的文章《》中介绍流数据技术的时候提到了空间过滤器—地理围栏。因此很多小伙伴好奇地理围栏的作用是什么,在SuperMap产品中如何使用,应用的效果如何等。为了让大家对流数据分析中的地理围栏有更多的了解,本文将在上一篇文章的基础上详细介绍一下流数据分析的地理围栏及其应用。

一、 地理围栏简介

地理围栏是基于移动位置服务的一种新应用,即用一个虚拟的栅栏围出一个虚拟地理边界。SuperMap iServer Streaming Service通过地理围栏技术来判断流服务传输的对象是否在某个区域内,以及判断流服务对象和某个区域的空间关系状态变化。

二、 地理围栏应用实践

1、 数据准备

1)流数据来源:flights2w.csv(通过WebSocket发送,模拟流数据)
2)围栏数据:fencedata.udb
ps:数据可点击文末的链接下载

2、流数据服务中配置地理围栏

1)先按照《》的“SuperMap流数据应用实践”部分,完成模拟器发送数据,以及流模型中的WebSocket接收器和WebSocket发送器的添加和配置。
2) 然后打开流处理模型,将“地理围栏转换器”拖到“节点编辑器”中,并将“WebSocket接收器”右侧的绿色方块拖出的箭头指向“地理围栏转换器”,然后将“WebSocket接收器”右侧的绿色方块拖出的箭头指向“WebSocket发送器”,如下图所示:在这里插入图片描述
3) 鼠标单击“节点编辑器”中的“地理围栏转换器”,配置如下参数:在这里插入图片描述
“节点名称”:可以自己更改
“节点描述”:可选填
“地理围栏数据”:必选,目前只有FeatureConnection类型。
“名称字段名”:必填,进入地理围栏对象的Name属性字段。
“ID字段名”:必填,进入地理围栏对象的ID字段,也就是唯一标识该对象的字段。
“进入地理围栏字段名”:必填,新增字段的字段名称,该字段用于记录当前对象是否在地理围栏内。
“状态字段名”:必填,新增字段的字段名称,该字段用于记录当前对象的状态是进入地理围栏还是离开地理围栏。

4)鼠标点击“FeatureConnection”,在随后显示的页面中,填写如下信息:在这里插入图片描述

“数据源类型”:udb,目前只支持这一种类型
“数据源连接信息”:添加” DsInfo”,有多少个数据源就添加多少个” DsInfo”。

5)点击“DsInfo-0”标签,填写“数据源文件路径”和“数据集名称”如下:在这里插入图片描述

6) 然后发布流模型,打开之前发布好的数据流服务,订阅到websocket推送过来的数据如下图:
在这里插入图片描述
添加地理围栏转换器之前流服务订阅的数据如下:
在这里插入图片描述
对比增加地理围栏之前,可以看出增加地理围栏之后推送的数据增加了地理围栏转换器配置的字段geoWithin 、geoStatus。
geoWithin:记录当前对象是否在地理围栏内,取值0和1。
                     0表示当前对象再地理围栏外
                     1表示表示当前对象再地理围栏内
geoStatus:记录当前对象的状态是进入地理围栏还是离开地理围栏,取值0、1、2、3。
                      0表示不知道当前对象的状态
                      1表示进入地理围栏
                      2表示离开地理围栏
                      3表示保持在地理围栏里面

附上流处理模型发布后生成的streaming文件,不想通过流模型编辑器创建的的小伙伴可以直接发布streaming文件:

{    "sparkParameter": {        "checkPointDir": "tmp",        "interval": 2000    },    "stream": {        "nodeDic": {            "WebSocketClientSender": {                "formatter": {                    "className": "com.supermap.bdt.streaming.formatter.GeoJsonFormatter"                },                "path": "ws://localhost:8800/iserver/services/dataflow/dataflow/broadcast?token=-tDPP6TivAixmhgNik3eLWQnfuUImTou9MpVnUhDs9GAkhDISEZgRqRifQ7Puy9kn2yWggqiNTXXfWGCyS1ibA..",                "nextNodes": [],                "name": "WebSocketClientSender",                "prevNodes": [                    "GeoTaggerMapper"                ],                "caption": "WebSocket发送器",                "className": "com.supermap.bdt.streaming.sender.WebSocketClientSender"            },            "WebSocketReceiver": {                "metadata": {                    "epsg": 3857,                    "fieldInfos": [                        {                            "name": "id",                            "source": "1",                            "nType": "TEXT"                        },                        {                            "name": "direction",                            "source": "0",                            "nType": "INT32"                        },                        {                            "name": "x",                            "source": "2",                            "nType": "DOUBLE"                        },                        {                            "name": "y",                            "source": "3",                            "nType": "DOUBLE"                        }                    ],                    "featureType": "POINT",                    "idFieldName": "id"                },                "nextNodes": [                    "GeoTaggerMapper"                ],                "reader": {                    "className": "com.supermap.bdt.streaming.formatter.CSVFormatter",                    "separator": ","                },                "name": "WebSocketReceiver",                "prevNodes": [],                "caption": "WebSocket接收器",                "className": "com.supermap.bdt.streaming.receiver.WebSocketReceiver",                "url": "ws://127.0.0.1:8181"            },            "GeoTaggerMapper": {                "className": "com.supermap.bdt.streaming.map.GeoTaggerMapper",                "caption": "地理围栏转换器",                "name": "GeoTaggerMapper",                "nextNodes": [                    "WebSocketClientSender"                ],                "prevNodes": [                    "WebSocketReceiver"                ],                "description": null,                "connection": {                    "type": "udb",                    "info": [                        {                            "server": "E:\\Data\\fencedata\\fencedata.udb",                            "datasetNames": [                                "regin"                            ]                        }                    ]                },                "fenceName": "NAME",                "fenceID": "SmID",                "withinFieldName": "geoWithin",                "statusFieldName": "geoStatus"            }        }    },    "version": 9000}

streaming文件中地理围栏相关参数说明:

connection:地理围栏对象的来源。
                     type——String类型。数据源类型

                     Info——Array[DsInfo]类型。数据源连接信息。

                                          server:地理围栏数据的路径

                                          datasetNames:用Array[String]类型。用于地理围栏的数据集名称
fenceName——String类型。进入地理围栏对象的Name属性字段。
fenceID——String类型。进入地理围栏对象的ID字段,也就是唯一标识该对象的字段。
withinFieldName——String类型。新增字段的字段名称,该字段用于记录当前对象是否在地理围栏内。
statusFieldName——String类型。新增字段的字段名称,该字段用于记录当前对象的状态是进入地理围栏还是离开地理围栏。

本文所用到的数据和流模型可访问下面的链接下载:

转载地址:http://njvxi.baihongyu.com/

你可能感兴趣的文章
2017(第十届)中国绿公司年会马云演讲
查看>>
李彦宏:睡不着觉不是因对手
查看>>
从手Q与微信之争,看腾讯内在的真实矛盾与战略
查看>>
移动互联网的七宗败案
查看>>
互联网十大失败案
查看>>
小米颓势已现,生死劫命悬手机
查看>>
三大隐忧 三星未来路在何方?
查看>>
linux下各种进制转化最简单的的命令行
查看>>
结构体和联合体
查看>>
ACM(Association for Computing Machinery )组织的详细介绍
查看>>
unix高级编程之-命令行参数(实践一)
查看>>
无线网络加密方式对比 .
查看>>
linux中cat命令使用详解
查看>>
卸载oracle
查看>>
hive 自定义函数jar发布的方法
查看>>
对DMA传输机制的学习
查看>>
QT中this指针
查看>>
java中的异常机制
查看>>
java SE面向对象思维导图
查看>>
三维分析之视频投放
查看>>