关于手机定位轨迹的算法逻辑

  本逻辑纯属个人意淫,仅供参考,望大家不吝赐教。

  一、1.0

   直接用GPS定位去获取坐标

  二、2.0

   采用GPS定位,在可用卫星大于3的情况下,每2秒采取1个点,连续才10个点,并取这10个点两点之间最小的两个点,其中一个点作为中心点;并加上计步器功能,如果10个点中有超过3个点的步数为0则重新取点。

  三、3.0

   为了满足室内定位,需要加入百度或其他的基于基站的定位,则在2.0的基础上;如果可用卫星数小于3,则用百度或其他的基于基站的定位,需要采取以每秒取2个点的速度取20个点,对着20个点进行取最中心的那个点,如果是可用卫星数大于3,则采用v2.0的规则;计步器功能主要是为了防止手机在长时间放置后,导致所采取的点到处乱飘现象。可用加入轨迹棱角平滑处理。

  四、4.0

   在3.0的基础上,在所获取到2个连续的点,这段时间实际能行走的距离与该连续2点之间的距离偏差较大,所以最后一次的点不能被采用

 

查阅资料:

  https://github.com/lifegh/StepOrient

      http://blog.csdn.net/zhouzheng034/article/details/47705517

  http://blog.csdn.net/jiack50/article/details/49796005

 

 

基本思想:逐点过滤,再经过基础过滤后,进行判断运动状态,静止状态和运动中。如果静止,则使用电子围栏;如果运动,则先过滤大速度,再过滤加速度,然后过滤距离(包括超大距离,和速度相关距离)。对于要过滤的点,采用之前最近的可靠点,进行替换,同时,无效次数+1,如果后面是有效点,则无效次数-1,如果无效次数归0,认为这个点才是真正可靠点(无效次数为正时,都为要被替换的点)。如果遇到不定点或者超大速度或者超大距离,无效次数+2,。如果无效次数大于等于15,上报不定位,如果无效次数大于等于30,认为GPS模块处于长时间漂移中,无效次数清0,重新采集10个点。

 

大速度过滤原则:超过130KM/H的认为大速度。可暗码调整最大速度。

 

加速度比较原则:只针对加速度,理论上不超过3海里/平方秒(1海里=1852米)。(百公里加速度,两危一客的车子一般为10s以上),可暗码调整加速度。

 

超大距离过滤原则:每秒超过50米+理论漂移距离30米=80米。可暗码调整每秒距离和理论漂移距离。

 

和速度相关距离过滤原则:先计算基准点速度V到最大速度130KM/H需要P秒,如果时间间隔T小于P秒,则距离使用V*T+A*T*T/2+理论漂移距离30米。如果间隔时间T大于P秒,则距离使用V*P+A*P*P/2+130*(T-P)+理论漂移距离30米。可暗码调整理论漂移距离以及最大速度和加速度。

 

距离小但有速度过滤原则:如果基准点和此刻的点距离小于5米,但速度大于10海里,认为该点存在漂移。

 

速度大距离小的过滤原则,如果速度大于40海里/小时,通过计算最近5个点的经纬度换算成速度,去掉最大最小,计算平均速度,再和当前GPS速度比较,如果当前GPS速度大于平均速度的10%,认为该点存在漂移。

 

替换原则:以上需要过滤原则未通过时,认为无效点,需要替换,时间不变,经纬度,速度等其他值使用之前的基准点。使用基准点上报。

基准点原则:第一次采集通过时,使用第九个点作为基准点,之后该点无效次数为0,则认为该点为基准点。

上报时,基准点都是用最新的GPS时间替换。

 

从无点到开始采集点:

依次判断是否存在无效点。如果有,认为不准确,重新采集。直到10个点都有效。

 

采集10个点之后,认为有效。进行车辆状态判断。

 

在ACCOFF时刻,如果基准点速度小于3海里/小时,认为该点正确,如果大于3海里/小时,则比较前面最多3个点,是否速度小于3海里/小时,如果是则采集,如不是,只好使用最后一个点。清速度,清方向,经纬度不变。

 

在ACCON时,

对10个点,进行速度比较

如果速度有6个以及以上都小于3海里/小时且有效,认为该物体为静止状态,则确定一个平均经纬度为中心点的电子围栏,如果之后点,都在电子围栏范围内,则认为物体处于静止状态,如果之后有3个点以上,都在电子围栏之外,则认为车辆处于慢速运动中。电子围栏的中心点重新采集。在使用电子围栏的时候,则基准点为电子围栏中心点。使用中心点上报。电子围栏的距离为5米,范围可暗码调整,连续范围外点数可暗码调整。

 

如果速度有3个都大于3海里/小时,解除电子围栏。进行正常比较。

 

 

备注:以上一些描述,给的只是gps轨迹描绘车辆行驶轨迹的时的一些思想,具体如何选用哪种过滤方式,要看自己能接触到的数据。我在项目中,接触到的,只是每隔1秒,或者5秒,或者10秒传过来的gps数据,要对车辆行驶轨迹进行优化。在上述算法中,只能进行大距离,大速度点过滤的优化。若我开发的模块能控制gps点的采集频率,上面的所有算法,都可以用来实现,得到的点也会比较精准。车辆行驶轨迹才会在地图上显示比较准确。

posted on 2017-04-08 15:21  洛易  阅读(1483)  评论(0编辑  收藏  举报