首页 > 解决方案 > 带 GPS 的 Ramer-Douglas-Peucker 算法

问题描述

我有 GPS 数据,可以靠近北极/南极并且可以移动数千公里。

如果我建立一个距离矩阵,例如:

from geographiclib.geodesic import Geodesic

p1_lat, p1_lon = 43.374880, -78.119956
p2_lat, p2_lon = 43.374868, -78.119666
geod = Geodesic.WGS84

g = geod.Inverse(p1_lat, p1_lon, p2_lat, p2_lon)

print("Distance is {:.2f}m".format(g['s12']))

我可以在上面应用 Ramer-Douglas-Peucker 算法吗?

我总是将一组 x,y 坐标作为 RDP 算法的输入,但在我的情况下,不存在保留距离的转换。

标签: pythonpython-3.xgpstransformationdouglas-peucker

解决方案


俗气的回答:是的,您可以应用该算法。但是,输出可能不是您想要的...

我的假设是您想要简化靠近任一极点的 GPS 轨迹。(这搞砸了 Ramer-Douglas-Peucker 导致坐标到处乱跳)

有大量研究致力于简化不同应用的轨迹。例如,是否保留高度/高度是否重要?速度重要吗(如沿轨迹的速度)?

这种情况有特定的算法。

一种简单的方法,可能确实处理了上述考虑因素,只是将纬度/经度转换为 XYZ 坐标,然后应用 RDP 算法。

(有关如何转换为 XYZ 的信息,请参见此答案:Stephen Quan的回答)


推荐阅读