作者:LX

背景

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

一、 地理围栏简介

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

二、 地理围栏应用实践

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

2、流数据服务中配置地理围栏
1)先按照《SuperMap流数据技术及应用实践》的“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类型。新增字段的字段名称,该字段用于记录当前对象的状态是进入地理围栏还是离开地理围栏。

本文所用到的数据和流模型可访问下面的链接下载:
https://download.csdn.net/download/supermapsupport/11434541

流数据分析之地理围栏应用相关推荐

  1. 警方办案滥用谷歌地理围栏,小伙三次骑车路过案发点被视作嫌犯

    明天和意外你永远不知道哪个会先来. 在如今信息化时代,警方可以通过一些行政命令来调查用户数据并分析锁定嫌疑犯,而如果这些权益运用不当,则会给合法公民的正常生活造成干扰和恐慌. 3 月 7 日,来自美国 ...

  2. 地理围栏API服务开发

    地理围栏API服务开发 要使用华为地理围栏服务API,需要确保设备已经下载并安装了HMS Core(APK),并将Location Kit的SDK集成到项目中. 指定应用权限 • 如果需要使用地理围栏 ...

  3. 流数据分析平台Storm简介

    流数据分析平台Storm简介 Storm是一个分布式的.容错的实时流计算系统,可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理.Storm保证 ...

  4. 随机邻域嵌入_「论文阅读」-学习用于通勤流嵌入的地理上下文嵌入

    论文地址:https://ojs.aaai.org//index.php/AAAI/article/view/5425 0x00 引言 本文章题为"用于通勤流预测的地理上下文嵌入学习&quo ...

  5. 如何做流数据分析,Byron Ellis来告诉你...

    2019独角兽企业重金招聘Python工程师标准>>>     如何做流数据分析,Byron Ellis来告诉你... 流数据越来越多,如各种消息.社交媒体.运行监控.在线服务.物联 ...

  6. 设置电子围栏 高德地图_地理围栏-辅助功能-开发指南-Android 定位SDK | 高德地图API...

    以下内容自定位 SDK V3.2.0 版本后支持. 第一步,创建地理围栏 地理围栏没有最大个数限制,您可以无限制的创建围栏.但请您根据业务需求合理的创建围栏,控制围栏个数可以有效的保证程序执行效率.定 ...

  7. 《TableStore最佳实践:轻松实现轨迹管理与地理围栏》

    一.方案背景 轨迹管理系统日常生活中使用非常普遍,如外卖派送轨迹.快递物流流转.车辆定位轨迹等.该场景与地理位置管理类似,核心点与瓶颈都在数据库的存储性能与查询能力,同时需要时间字段正序排列,保证轨迹 ...

  8. TableStore轻松实现轨迹管理与地理围栏

    一.方案背景 轨迹管理系统日常生活中使用非常普遍,如外卖派送轨迹.快递物流流转.车辆定位轨迹等.该场景与地理位置管理类似,核心点与瓶颈都在数据库的存储性能与查询能力,同时需要时间字段正序排列,保证轨迹 ...

  9. 大疆地理围栏系统预防无人机闯入机场

    全球最大的无人机制造商大疆(DJI)发表了「在线地理空间环境」( Geospatial Environment Online,GEO)2.0版,主要改善了欧洲市场的地理围栏(Geofencing)技术 ...

最新文章

  1. oracle查看联机日志,oracle联机日志和归档日志
  2. Oracle EXPDP/IMPDP示例
  3. ARM汇编文件的组成和汇编指令类型
  4. android6.0源码分析之Runtime的初始化
  5. 《程序是怎样跑起来的》第二章
  6. 基于JAVA+Swing+MYSQL的学生选课系统
  7. 51nod 1101 换零钱 【完全背包变形/无限件可取】
  8. ppt文件太大怎么变小?
  9. mysql设置字符集gb2312_mysq查询语句包含中文以及中文乱码,字符集 GBK、GB2312、UTF8的区别...
  10. 计算机启动死机,电脑开机突然死机怎么回事?小编教你解决开机死机问题
  11. Dreamweaver 8 时间轴及创建时间轴动画(转)
  12. 浅析提高倾斜摄影超大场景的三维模型轻量化的数据质量关键技术
  13. 让天嵌的E9板通过网线与能上网的笔记本连接实现联网
  14. 物理机安装linux系统,U盘在物理机安装linux系统
  15. Python异步: 什么时候使用异步?(3)
  16. 范式-范式:范式 百科
  17. 2022年中考英语热点话题作文预测(满分范文15篇)
  18. SAP FI/CO 知识 搜集整理
  19. 海投的简历暴露了你的什么问题?
  20. 回忆 | 奔跑在昔日

热门文章

  1. 从零开始WebAPP尝试(四)----登录实现
  2. 【苹果相册推】您只需使用证书并发布证书描述文件(无需发布)上传PEM范例文件
  3. Win10邮件应用怎么添加网易邮箱
  4. 看linux centos版本信息,Linux CentOS查看操作系统版本信息
  5. Zero-Shot Learing与Attention Machinism
  6. (附源码)计算机毕业设计SSM驾校预约考试管理系统
  7. 利用七牛存储7天远程自动备份LINUX服务器
  8. 电子设计竞赛学习msp430单片机(msp430g2553,msp430f5529,tmec123G)
  9. Python神经网络是这样识别手写字符哒?
  10. 康奈尔本科学计算机要什么条件,康奈尔大学计算机专业申请条件详细解读