转载

虚拟地理围栏服务

概要介绍

虚拟地理围栏服务,主要提供增删查改地理围栏的功能,同时判断坐标点(人、物)与围栏的关系判定服务。提供地理围栏服务的主要有高德和百度地图两家公司。以高德为例,使用高德地理围栏服务,首先需要申请web服务权限,并有配额限制(围栏创建个数限制、围栏服务调用次数限制),此外,还需开通到高德api的网络访问关系,围栏涉及到的数据均在高德服务方。针对上述3个痛点:1、配额限制;2、网络访问关系;3、数据不透明。物联网项目组开发了可提供地理围栏基本服务的jar包。

虚拟地理围栏服务

iot-geotool是物联网平台的一个可供外部应用引入的jar包,发布在maven仓库的cmbc-projects-releases和cmbc-projects-snapshots。用于提供地理围栏的增删改查,检索和计算等功能。这是一个纯jar包,采用Esri公司提供的geometry-api-java库,可用于在第三方数据处理解决方案中实现空间数据处理,完成具体功能。地理围栏的存储,因数据量不多,且为了检索速度,故采用关系数据库存储。

国内目前常见的坐标系主要分为三种:

  • 地球坐标系WGS84:常见于gps设备、google地图

  • 火星坐标系GCJ-02:国内使用被强制加密后的坐标体系,高德地图

  • 百度坐标系BD-09:在火星坐标系的基础上进行再加密,百度地图

该jar包中使用的坐标系为火星坐标系,围栏的坐标和物体的坐标建议采用高德坐标,不同坐标系需要进行换算,否则会有误差。

常用接口说明

1、根据应用Id查询围栏Id: findShape

返回值类型: GeoShape 对应 数据库GeoShape表字段)

参数

含义

规则

是否必填

appId

围栏归属的应用ID

根据appId控制相应访问权限

geoId

围栏编码ID

在本地数据库中的编号

2、根据应用Id删除该应用下的某个围栏: deleteShape

返回值类型boolean: true表示删除成功,false表示删除失败

参数

含义

规则

是否必填

appId

围栏归属的应用ID

根据appId控制相应访问权限

geoId

围栏编码ID

在本地数据库中的编号

3、创建多边形围栏: createPolygon

返回值类型String: 返回该围栏Id

参数

含义

规则

是否必填

appId

围栏归属的应用ID

根据appId控制相应访问权限

geoId

围栏编码ID

在本地数据库中的编号

name

围栏名字

desc

围栏描述

points

多边形坐标点集合

以多边形顺时针方向传入点的集合,每个点pointN的坐标的经纬度用英文逗号隔开:point1;point2;point3...

4、创建圆形围栏: createCircle

返回值类型String: 返回该围栏Id

参数

含义

规则

是否必填

appId

围栏归属的应用ID

根据appId控制相应访问权限

geoId

围栏编码ID

在本地数据库中的编号

name

围栏名字

desc

围栏描述

center

圆形围栏的中心坐标

传入坐标经纬度用英文逗号隔开

radius

圆形围栏的半径

单位m

dimension

圆形围栏切割的边数

由于创建圆形围栏方式是将其切割为多边形进行计算,当传入小于3的数字时,默认切割为四边。

5、判断传入坐标point是否在某个围栏内: inShape

返回值类型boolean: true表示该点在围栏内,false表示该点不在围栏内

参数

含义

规则

是否必填

appId

围栏归属的应用ID

根据appId控制相应访问权限

geoId

围栏编码ID

在本地数据库中的编号

point

传入坐标

传入坐标经纬度用英文逗号隔开

6、修改为多边形电子围栏: updatePolygonShape

返回值类型boolean: true表示修改围栏成功,false表示修改围栏失败

参数

含义

规则

是否必填

appId

围栏归属的应用ID

根据appId控制相应访问权限

geoId

围栏编码ID

在本地数据库中的编号

desc

围栏描述

points

多边形坐标点集合

以多边形顺时针方向传入点的集合:每个点pointN的坐标的经纬度用英文逗号隔开:point1;point2;point3...

7、修改为圆形围栏: updateCircleShape

返回值类型boolean:true表示修改围栏成功,false表示修改围栏失败

参数

含义

规则

是否必填

appId

围栏归属的应用ID

根据appId控制相应访问权限

geoId

围栏编码ID

在本地数据库中的编号

desc

围栏描述

center

圆形围栏的中心坐标

传入坐标经纬度用英文逗号隔开

radius

圆形围栏的半径

单位m

dimension

圆形围栏切割的边数

由于创建圆形围栏方式是将其切割为多边形进行计算,当传入小于3的数字时,默认切割为四边。

使用方式

在tesla的项目工程中引入该jar的过程如下:

数据库建表涉及到两张表,其中mysql数据库的建表语句如下:

虚拟地理围栏服务

1.  在pom文件中添加jar包的repository目录。

虚拟地理围栏服务

2.  添加对iot-geotool的jar包依赖。

虚拟地理围栏服务

3. 在父容器的xml文件中添加对包:

“cn.com.cmbc.iot.geotool.service”的扫描路径。

4. 在mybatis的xml文件中添加对:

“cn.com.cmbc.iot.geotool.db.mapper”的扫描路径。

参考资料

  • GeoHash

  • Google S2 算法 https://github.com/google/s2-geometry-library-java

  • https://github.com/Esri/geometry-api-java

  • 高德坐标拾点:https://lbs.amap.com/console/show/picker

Thanks!

作者简介:

孟凡娇, 现供职于民生银行信息科技部创新板块物联网实验室 ,主要从事物联网金融领域相关的探索与开发工作。

孙升芸,现供职于民生银行信息科技部创新 板块 物联网实验室,负责物联网技术在金融领域的应用研究。

虚拟地理围栏服务

原文  http://mp.weixin.qq.com/s?__biz=MzUyMDMwMTI1Nw==&mid=2247485748&idx=1&sn=8925aa3276838455318b07009f1c81ab
正文到此结束
Loading...