【问题标题】:Algorithm for reducing GPS track data to discard redundant data?减少GPS轨迹数据以丢弃冗余数据的算法?
【发布时间】:2011-11-04 19:35:36
【问题描述】:

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

因此,出于性能原因,我们正在寻找擅长“减少”此类数据的算法,以便显着减少显示的点数,但不会冒数据被误解的风险。例如,如果我们虚构的自行车骑手停下来喝一杯,我们当然不想在 7-11 周围的集群中绘制 100 个纬度/经度点。

我们知道聚类,这对于查看一堆不连贯的点很有用,但是我们需要的是适用于如上所述的 tracks 的东西。谢谢。

【问题讨论】:

  • 你可能想看看 gpsbabel 的 simplify 选项的来源。

标签: gps gis geospatial openlayers


【解决方案1】:

一个更科学,也许更数学的解决方案是使用Ramer-Douglas-Peucker algorithm 来概括你的路径。我在攻读测量学硕士时使用过它,所以这是一个经过验证的事情。 :-)

给出你的路径和你在路径中可以容忍的最小角度,它通过减少点的数量来简化路径。

【讨论】:

  • 谢谢。这是我正在寻找的东西类型,并且必须找出它对 cpu 的密集程度以及我是否可以为我们的服务器找到或编写一个实现。
  • 酷!祝你好运。但是您选择了其他答案作为解决方案,您会先尝试吗?
  • 不确定。考虑到这一点,人们开车的“真实”gps数据往往会产生疯狂的循环和噪音和圆圈等集群。该算法虽然非常酷,但似乎更适合您可以辨别起点和终点的数据。不得不多想。此外,处理可能涉及点数的平方,因此可能会受到性能限制。
  • 是的,我认为某种初始过滤也不错。基于点之间的最小距离或类似的东西。但我不同意该算法的可用性——我认为只要在点之间添加使用线(可能是箭头)就足够了。但这对于显示“疯狂循环”的每种方法都是必要的 :-)
【解决方案2】:

通常最好的方法是:

  1. 确定您希望显示的 GPS 点之间的最小屏幕像素数。

  2. 确定当前缩放级别中每个像素所代表的距离。

  3. 将答案 1 乘以答案 2 以获得您要显示的坐标之间的最小距离。

  4. 从旅程路径中的第一个坐标开始,读取每个下一个坐标,直到您达到与当前点的所需最小距离。重复。

【讨论】:

  • 谢谢,但也许我应该用一个比骑自行车的人更好的例子:步行在附近工作的推销员可能会更好,因为我们正在处理的数据可能涉及回旋和其他各种有点随机运动,而不是过度简化某人去旅行,其中每个点都比上一个点离原点更远。
  • 其实我的答案中的算法仍然成立。如果点未超出最小行程,则除非增加缩放级别,否则不会显示它们。
  • 是的,这可能行得通。现在也看到提到卡尔曼滤波,但这是一种更难实现的高级解决方案,并且可能存在处理/性能问题。再次感谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-20
  • 2014-08-28
  • 1970-01-01
相关资源
最近更新 更多