检测和删除GPS点的混杂聚合物的策略?

14

我的问题是,我有许多来自不同汽车GPS记录器的GPS轨迹。这些廉价设备即使静止不动也会记录虚假移动:

enter image description here

如上图所示,大约有一千个点被可视化成一种拥堵状态。现在我想要移除所有这些点,使得从左侧出发的红色轨迹在抖动开始之前结束。
我的方法是在轨迹中的每个点周围“画”两到三个圆圈,检查这些圆圈内有多少其他点,并检查比率:
(#points / 覆盖面积)> 阈值?

enter image description here

如果阈值超过一定比例(紫色圆圈),我可以删除其中的所有点。这种方法简单,但具有巨大的缺点,例如计算时间,仅通过圆圈的“无辜”轨迹被删除,不能检测到底部图片中的单个点等异常值。
我正在寻找一种更好的方法来检测像图片中的大堆积点一样的情况。它不应该去除错误的阳性(可能是5或10个点),这些聚合对我来说并不重要。此外,它不应该简化其余的轨迹!
编辑:给定示例的结果应如下所示: enter image description here

1
对于可视化我给一个赞,不过我认为问题可以通过更具体地解释自己的考虑来改进。否则这似乎有点宽泛。 - Niklas B.
在这里工作的开源算法 https://dev59.com/9lLTa4cB1Zd3GeqPdcQa#36195571 - Afonso Santos
3个回答

2
我的第一步是调查你的静止车辆的“运动”和高度变化所暗示的速度。如果其中一个变化过快或过慢(你需要决定阈值),那么你可能可以得出它们是由GPS抖动引起的结论。
除时间位置外,你的GPS设备还报告了哪些信息?
编辑(在OP的评论之后):
问题在于将日志的一部分描述为“汽车行驶”,另一部分描述为“汽车不行驶但GPS位置抖动”。我提出了一种方法,本杰明提出了另一种方法。如果速度不能准确区分,请尝试加速度。尝试改变方向的速率。如果这些简单的方法都不起作用,我认为现在是时候拿出你的统计学教科书开始计算随机过程的自相关等内容了。此时,我悄悄地溜走...

这是一个很好的观点,我也考虑过。尝试的阈值可以是3公里每小时。除了时间和位置之外,记录器只提供有关计算数据(速度、加速度和航向)的信息。它是一个简化的NMEA RMC,没有有关信号质量或卫星数据的信息。 - Norbert
我检查了GPX文件:抖动包含超过10公里每小时的速度,所以这种方法行不通!:( - Norbert

2
与High Performance Mark的回答类似,您可以寻找在短时间内发生的线交点。当在路上行驶时,最后n个点的路径很少会与自身相交,但由于抖动,在您的静止情况下会出现相交。单个交点可能是一个人折返或绕过街区,但多个交点应该更少见。对于抖动情况,交点的角度也会更尖锐。

+1:我喜欢这个答案,因为它提供了一个快速、立即可行的解决方案,很可能会奏效。太棒了。 - Li-aung Yip
关于“误报正交”交叉点——从点间距来看,我会说时间分辨率大约为一秒钟。在那个时间尺度上反复自相交你的路径,你必须像一只追逐自己尾巴的狗一样。 - Li-aung Yip

0
GPS点的数据间隔是多少,看起来是以秒为单位。可能还有一种方法可以添加到先前提到的逻辑中。

sum_of_distance(d0,d1,d2....dn)>=80% sum_of_distance(d0,dn)

在这个0到n的值范围内,可以迭代较小和较大的块,因为该范围内的行驶距离不会太多。因此,您可以最初迭代60个数据点,并在该数据中每次迭代10个数据点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接