地理围栏报警类接口主要提供
1. 查询监控对象在围栏内/外:查询被监控对象在指定围栏内或外,也支持查询被监控对象目前相对于所有围栏的状态
2. 查询围栏报警信息:支持查询某时间段内单个围栏或该 service 下所有围栏的报警信息
3. 服务端报警信息推送:鹰眼将报警信息实时推送至开发者的服务端
目前中国主要有以下三种坐标系:
WGS84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系
GCJ02:是由中国国家测绘局制订的地理信息系统的坐标系统。由WGS84坐标系经加密后的坐标系
BD09:为百度坐标系,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标
非中国地区地图,统一使用WGS84坐标
鹰眼 Web服务API v3.0的默认输入输出参数为百度坐标(BD09),同时可通过"coord_type","coord_type_input","coord_type_output"(以各服务参数介绍为准)控制输入输出的坐标类型,鹰眼将自动完成转换。
1. 为保证轨迹点的顺序性,使用查询围栏报警信息(querystatus)接口时,轨迹点上传成功后,服务端会有15秒左右报警延迟。
2. 围栏报警是通过计算监控对象的轨迹来进行状态判断。为提高报警准确性,服务端将针对轨迹做去噪纠偏。
3. 若监控对象的轨迹点异常,围栏报警计算时将会过滤该点,建议使用实际路测数据测试地理围栏报警服务功能。
在使用围栏时,发现轨迹点未触发围栏报警,开发者可从以下几方面排查原因:
1. 轨迹点的定位时间是否早于围栏创建时间,若如此,此点将不参与围栏计算;
2. 轨迹点被认为是噪点被去除,从而不参与围栏计算。噪点的判定方法,一方面是轨迹点定位误差是否超过了开发者创建围栏时设置的去噪阈值(denoise),一方面是鹰眼内部的去噪策略,开发者可通过轨迹管理台对比原始轨迹和去噪后轨迹来辨别噪点;
3. 轨迹点不是真实轨迹,而是开发者构造的虚拟轨迹,围栏在计算时也将忽略这部分轨迹;
4. 轨迹点上传顺序错乱问题,若定位时间较新的轨迹点已上传并参与围栏计算了,那么此时再上传定位时间较旧的轨迹点,则旧轨迹点不再参与围栏计算。
查询被监控对象在指定围栏内或外,也支持查询被监控对象目前相对于所有围栏的状态
https://yingyan.baidu.com/api/v3/fence/querystatus
//GET请求
https://yingyan.baidu.com/api/v3/fence/querystatus?service_id=100000&monitored_person=小明&fence_ids=1,2,3&ak=<用户的'''AK>'''
{"status": 0,"message": "成功","size": 2,"monitored_statuses": [{"fence_id": 2,"monitored_status": "in"},{"fence_id": 3,"monitored_status": "unknown"}]}
简介:传入坐标,计算该坐标在围栏内/外。
适用场景:由于querystatus接口需要保证到轨迹点的顺序性,因此查询状态会有15s的延迟。若开发者对即时性要求甚高,如共享汽车、共享单车落锁时对于是否停在规定围栏内的判断,可使用querystatusbylocation接口:传入当下定位的坐标,则鹰眼将计算该坐标相对于围栏的状态(内/外)。
https://yingyan.baidu.com/api/v3/fence/querystatusbylocation
//GET请求
https://yingyan.baidu.com/api/v3/fence/querystatusbylocation?service_id=100000&monitored_person=小明&fence_ids=1,2,3&longitude=116.334129&latitude=40.010939&coord_type=bd09ll&ak=<用户的'''AK>'''
{"status": 0,"message": "成功","size": 2,"monitored_statuses": [{"fence_id": 2,"monitored_status": "in"},{"fence_id": 3,"monitored_status": "unknown"}]}
查询围栏的监控对象7天以内(包含7天)的围栏报警信息,7天以外的报警信息将被删除。
注:即使围栏或监控对象已被删除,仍能根据 fence_id 和 monitored_person 查询7天之内的报警信息。
https://yingyan.baidu.com/api/v3/fence/historyalarm
//GET请求
https://yingyan.baidu.com/api/v3/fence/historyalarm?service_id=127980&monitored_person=小明&fence_ids=1&start_time=1489420800&end_time=1489507200&ak=<用户的AK>
{"status": 0,"size": 1,"message": "成功","alarms": [{"fence_id": 1,"fence_name":"围栏名称","monitored_person":"entity1","action": "exit","alarm_point":{"longitude":116.2333,"latitude":43.892,"radius":27,"loc_time": 1419388604"create_time": 1419388609},"pre_point":{"longitude":116.2367,"latitude":43.894,"radius":28,"loc_time": 1419388724"create_time": 1419388729}}]}
批量查询某 service 7天内任意1小时,所有围栏的报警信息。
https://yingyan.baidu.com/api/v3/fence/batchhistoryalarm
//GET请求
https://yingyan.baidu.com/api/v3/fence/batchhistoryalarm?&service_id=127980&start_time=1489420800&end_time=1489424400&ak=<用户的AK>
{"status": 0,"total": 2000,"size": 500,"message": "成功","alarms": [{"fence_id": 1,"fence_name":"学校","monitored_person":"小明","action": "exit","alarm_point":{"longitude":116.2333,"latitude":43.892,"radius":27,"loc_time": 1419388604"create_time": 1419388609},"pre_point":{"longitude":116.2367,"latitude":43.894,"radius":28,"loc_time": 1419388724"create_time": 1419388729}},{"fence_id": 1,"fence_name":" 学校","monitored_person":"小明","action": "enter","alarm_point":{"longitude":116.2333,"latitude":43.892,"radius":12,"loc_time": 1419387405,"create_time": 1419387405},"pre_point": {"longitude":116.2367,"latitude":43.894,"radius":15,"loc_time": 1419387465,"create_time": 1419387465}}]}
鹰眼服务端支持将报警推送至开发者的服务端、鹰眼SDK(了解报警推送至鹰眼SDK功能请前往Android鹰眼SDK、iOS鹰眼SDK)。
若开发者要将围栏报警信息推送至开发者的服务端,需要开发者在自己的服务端实现自己的接收报警信息的HTTP服务,同时在轨迹管理台设置页面同步配置服务地址;百度鹰眼将通过该地址向开发者的服务端发送http请求,在请求中推送围栏报警信息。

1,鹰眼服务端将向开发者发送两类请求:
【地址校验请求】百度鹰眼在拿到开发者的URL的时候,需要对该URL做有效性校验,保证URL的可用性
【报警信息推送请求】百度鹰眼地址校验通过后,将通过该类请求向开发者推送围栏报警信息
2,鹰眼服务端推送报警时,开发者返回信息接收是否成功。如果1s之内没有收到响应信息,则推送报警失败。若推送失败,将在后续的10分钟之内每隔60s推送一次,直至收到成功响应。若10分钟之后仍未成功,将不再推送,但报警记录将存储在鹰眼服务端。为避免因此造成报警漏接收,开发者可定期使用历史报警查询接口同步报警信息
3,开发者接收报警信息后的响应信息请务必按照格式填写,且为JSON格式,服务方可正确设置成功。具体格式请参考本页面最下方示例。
给开发者的建议:开发者在接收到该类消息之后,使用异步方式做业务处理。即获取到消息内容之后,立即返回,而报警推送的业务处理则在另外的线程中处理。
第一步:开发者搭建服务,使用http协议,构建服务端接收报警信息的URL
(请注意,该URL请求无需参数,URL中不可含有& ?等特殊字符)
客户服务端需要支持 Content-Type: application/json Content-Type: application/x-www-form-urlencoded
开发者接收报警信息的服务要求必须及时对鹰眼服务端发送的请求做出响应,如鹰眼服务端1s之内没有收到响应信息,则报警失败。
假设用户提供的URL为http://your.server.name:port/your/path
第二步:在轨迹管理台设置页面配置该URL

配置成功后,鹰眼服务端立即向开发者发送校验URL请求:
1.校验请求:POST请求,仅配置地址完成后首次报警前发送该请求。
POST内容为JSON格式消息,{“type”:1, ”service_id”:2741}
校验成功后,当鹰眼服务端围栏触发报警时,将向此URL推送地理围栏报警信息。
2.报警推送请求:POST请求,围栏触发报警即发送该类请求
POST内容为JSON格式消息,{“type”:2, ”service_id”:2741, ”content”:[报警信息数组]}
接口说明
支持将鹰眼服务端地理围栏报警信息推送至开发者的服务端。
请求URI
开发者构建围栏报警请求URL,鹰眼将根据此URL向开发者服务端发送请求。
该URL需要同步在轨迹管理台配置页面配置,使鹰眼能够唯一识别对应service_id与开发者服务端地址。
HTTP请求方式
POST
数据格式
请求和返回均为JSON格式
百度鹰眼不对响应内容做处理,只要http的状态码为200,则视为发送成功(返回非200的其他任何内容都视为该次调用失败)。此响应内容中的status不作为成功与否的标志,也不会根据此status的值做重试处理。
以下是一个校验消息的完整请求示例:
请求头
"SignId": "baidu_yingyan"
请求体
{"type":1,"service_id":2741}
以下是一个推送消息的完整请求示例:
请求头
"SignId": "baidu_yingyan""Content-Encoding": "gzip"
请求体(解压缩之后)
{"type":2,"service_id": 2741,"content":[{"fence_id": 1,"fence_name": "A_01","monitored_person": "A001","action": "enter","alarm_point": {"longitude": 113.29251520916,"latitude": 23.45610760748,"radius": 3,"coord_type" : "bd09ll","loc_time": 1490179579,"create_time": 1490179593},"pre_point": {"longitude": 113.20148113236,"latitude": 23.431332045033,"radius": 10,"coord_type" : "bd09ll","loc_time": 1490179557,"create_time": 1490179569}}]}
返回头
"SignId": "baidu_yingyan"
返回体
{"status":0,"message":"成功"}
上一篇
下一篇
本篇文章对您是否有帮助?