围栏报警作为 obd 较为重要的一个功能实质上是依靠软件技术来实现的一个功能。
什么是围栏
根据地图服务提供能的路书功能,我们能将车辆行驶的坐标在地图上形成轨迹标示出来,如果车主将车停靠在某一个位置,而对这个位置的环境不放心的时候,车主可以在地图上将车所在的区域设置一个围栏,并设置如果车辆离开围栏则将警报信息发送给车主,这就是围栏报警。
有哪些围栏以及使用场景
一般情况下两种围栏即可满足大部分常规需求。
一是规则围栏,以某一个位置画一个圆圈。这种围栏一般用来设定车辆的安全位置,当车发生移动并走出围栏则触发报警。
二是多边形围栏,多边形围栏既可以满足规则一的使用场景也可以较为复杂的需求。如车辆行径路线的管理,在地图上将某一段路使用围栏围起来,划定车辆的行驶范围,当车辆超出行驶范围时触发警报。
围栏的实现
规则一围栏的实现较为简单,知道圆的半径后,根据车辆上报的坐标计算距离中心点的距离和半径做对比即可知道是否进入或开出围栏。
规则二的实现涉及到较为复杂的算法,即为:判断一个点是否在一个多边形区域内。较为可靠的算法是投影法,以原始点为起点,沿着 Y 轴向上下两个防线分别话一条垂直线,判断这条线与多边形围栏的边相交点的个数。如果为偶数个则表示在多边形外,如果为奇数个则表示在多边形内。
如上图中,目标点 1 坐标点在内部,以起始点画一条垂直线,即 Y 轴。在 Y 轴的上下两方和围栏在 A,B 点各有一处相交,则可以判断是在多边形内。
目标点 2,3 分别和多边形围栏的各个边相交的情况为:
目标点 2,Y 上 0 个,Y 下两个
目标点 3:Y 上 0 个,Y 下 0 个
所以目标点 2 和目标点 3 都在多边形围栏外。
在实现的过程中要注意一点非常重要的问题,那就是不管是北斗还是 GPS 还是伽利略上传的坐标点是 WGS 标准的坐标,在百度地图或者高德地图上应用时需要转为地图相应的坐标才行,否则是失之毫厘谬以千里。
在围栏的设置过程中,如果为一辆车在其必经的路线上设置了一个较小区域时,应当考虑到车速情况。obd 平均 15 秒(可以设置上报间隔)上报一次数据,如果在进入围栏前上报了一条数据,等下一条上报时,已经穿过围栏了,这种情况并不会触发报警。