查找表示 GPS 路线的两条线之间的距离(MATLAB、Java、C++ 或 Python)
Posted
技术标签:
【中文标题】查找表示 GPS 路线的两条线之间的距离(MATLAB、Java、C++ 或 Python)【英文标题】:Finding the Distance Between Two Lines that represent GPS routes (MATLAB, Java, C++, or Python) 【发布时间】:2013-10-24 04:12:51 【问题描述】:我一直在研究并试图解决这个问题,但无济于事。我找到了很多方法不能解决这个问题...... 问题的要点:我正在寻找一种方法来计算与通过 GPS 坐标行进的原始路径的偏差。我有多个包含纬度、经度和 UTC 时间的 csv 文件。我已经根据这些信息创建了 KML 文件,以便直观地查看偏差,现在想为这个偏差设置一个值。我选择了一条路线作为参考,并希望根据参考路线测量其他路线。有多条路线,每条路线都有自己的参考路线,每条路线都有很多条路线。没有两次运行是相同的,并且一些路线的偏离比下一次更多。我不能使用时间,只能使用 lat 和 lon,因为运行是在数周的数据收集中完成的。
到目前为止我已经尝试过: Haversine 和 Equirectangular 公式(循环并测量点对点)。 结果:坐标只排了很短的时间,点数差异很大。 每条曲线下的面积:打算通过这种方法找到两条路线的差异。 结果:真的不确定如何进行,也找不到适合此计算的方程。
还有一些更微弱的尝试,但已经为此工作了几个星期,没有太多可展示的内容,并且仍然不确定如何进行。
任何帮助或想法将不胜感激。
【问题讨论】:
【参考方案1】:可能的解决方案1:不用计算两条路线之间的“横向”偏差,只需比较各自的弧长(Matlab:arclength)。
可能的解决方案 2:比较两条路线,每条路线都从同一起点 A 到同一终点 B:在 A 和 B 之间画一条直线,沿 AB 放置多个等距点,然后平均从 AB 上的这些点到您要比较的路径的垂直距离。与直线参考的累积偏差之间的绝对差值就是您的偏差。
可能的解决方案3:计算每条路线的弧长。在每条路线上放置一些等距的点。平均这些点之间的距离。
解决方案 2 和 3 都取决于您放置的点数,但点数越多,平均偏差就会收敛。请注意,这些解决方案都与计算每条曲线下的面积有关。
【讨论】:
感谢您的建议。我的下一个尝试是使用 Haversine 公式对每条路线的每个点到点距离求和,然后根据参考路线测量偏差。这是否类似于弧长解决方案?似乎它会,但是我不确定这在数学上是否合理。以上是关于查找表示 GPS 路线的两条线之间的距离(MATLAB、Java、C++ 或 Python)的主要内容,如果未能解决你的问题,请参考以下文章