python - 带 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 算法的输入,但在我的情况下,不存在保留距离的转换。
解决方案
俗气的回答:是的,您可以应用该算法。但是,输出可能不是您想要的...
我的假设是您想要简化靠近任一极点的 GPS 轨迹。(这搞砸了 Ramer-Douglas-Peucker 导致坐标到处乱跳)
有大量研究致力于简化不同应用的轨迹。例如,是否保留高度/高度是否重要?速度重要吗(如沿轨迹的速度)?
这种情况有特定的算法。
一种简单的方法,可能确实处理了上述考虑因素,只是将纬度/经度转换为 XYZ 坐标,然后应用 RDP 算法。
(有关如何转换为 XYZ 的信息,请参见此答案:Stephen Quan的回答)
推荐阅读
- node.js - 无法检索 Express-Session 和 Connect-Session-Firebase 的 Session Cookie
- java - 关于为什么这个变量没有像希望的那样改变的Java多线程问题
- python - 为什么它说队列是空的而不是空的?
- python - '
' django 错误 - javascript - 将数组值设置为对象的不同键
- python - 通过 CLI 创建 EB 应用程序时遇到问题
- apache-zookeeper - CHECK ZOOKEEPER 安装、启动和测试步骤失败
- json - 在 joblib.Parallel 中的 python 3.7 中解析 json
- android - 我的反应应用程序中的按钮在 iPhone 的浏览器中不可见
- javascript - 我如何从中获得价值在javascript中?