减少GPS轨迹数据以丢弃冗余数据的算法?

减少GPS轨迹数据以丢弃冗余数据的算法?,gps,gis,geospatial,openlayers,Gps,Gis,Geospatial,Openlayers,我们正在构建一个GIS界面来显示GPS轨迹数据,例如,想象一下一个人骑着自行车在附近徘徊了一个小时的原始数据集。像这样的一组数据,可能每5秒记录一个新的点,将是巨大的,在浏览器或手持设备中显示它将是一个挑战。此外,通常不需要显示每个点,因为用户无法直观地解析那么多数据 因此,出于性能方面的原因,我们正在寻找能够很好地“减少”这样的数据的算法,这样可以显著减少显示的点数,但不会造成数据错误解释的风险。例如,如果我们虚构的骑自行车的人停下来喝酒,我们当然不想在7-11周围的集群中画100个lat/l

我们正在构建一个GIS界面来显示GPS轨迹数据,例如,想象一下一个人骑着自行车在附近徘徊了一个小时的原始数据集。像这样的一组数据,可能每5秒记录一个新的点,将是巨大的,在浏览器或手持设备中显示它将是一个挑战。此外,通常不需要显示每个点,因为用户无法直观地解析那么多数据

因此,出于性能方面的原因,我们正在寻找能够很好地“减少”这样的数据的算法,这样可以显著减少显示的点数,但不会造成数据错误解释的风险。例如,如果我们虚构的骑自行车的人停下来喝酒,我们当然不想在7-11周围的集群中画100个lat/lon点


我们知道聚类,这在查看大量断开连接的点时非常有用,但是我们需要的是适用于轨迹的东西,如上所述。谢谢。

通常最好的方法是:

  • 确定显示的GPS点之间所需的最小屏幕像素数

  • 确定当前缩放级别中每个像素表示的距离

  • 将答案1乘以答案2,得到要显示的坐标之间的最小距离

  • 从行程路径中的第一个坐标开始,读取下一个坐标,直到距离当前点达到所需的最小距离。重复一遍


  • 一个更科学、也许更数学化的解决方案是使用这个方法来概括你的路径。我在为我的测量硕士学习时使用了它,因此这是一件经过验证的事情。:-)

    给出你的路径和你能容忍的最小角度,它通过减少点数简化了路径


    您可能需要查看gpsbabel选项的来源。谢谢,但也许我应该用一个比骑自行车的人更好的例子:一个在附近步行的推销员可能会更好,因为我们处理的数据可能涉及回环和其他一些随机运动,而不是一个过于简单的旅行,每个点都比最后一点离原点更远。事实上,我答案中的算法仍然适用。如果点不超过最小行程,则除非增加缩放级别,否则不会显示。是的,这可能有效。现在还提到了卡尔曼滤波,但这是一个更难实现的高级解决方案,可能存在处理/性能问题。再次感谢汉克斯。这是我正在寻找的类型,并且必须了解它的cpu密集程度,以及我是否能够找到或编写服务器的实现。酷!祝你好运。但是你选择了另一个答案作为解决方案,你会先试试吗?不确定。考虑到这一点,人们驾驶的“真实”gps数据往往会产生疯狂的循环、噪音和圆圈等。这种算法虽然非常酷,但对于可以辨别起点和终点的数据来说似乎更好。我得多考虑一下。另外,处理过程可能涉及点数的平方,因此可能会有性能限制。是的,我认为某种初始过滤也很好。基于点之间的最小距离或类似的东西。但是我不同意这个算法的可用性——我认为只要在点之间加上线条(也许是箭头)就足够了。但这对于显示“疯狂循环”的每个方法都是必要的:-)