首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Haversine公式和Vincenty公式中哪一个更适合计算距离?

Haversine公式和Vincenty公式中哪一个更适合计算距离?
EN

Stack Overflow用户
提问于 2016-07-07 22:26:01
回答 2查看 19K关注 0票数 33

在计算两个纬度/经度点之间的距离时,哪一个更好,是Haversine公式还是Vincenty公式?为什么?

这个距离显然是在地球上计算出来的。WGS84和GCJ02坐标是否会影响计算或距离(文森西的公式将WGS84轴考虑在内)?

例如,在安卓系统中,Google Map Utils使用哈维正弦公式,但android.Location对象(Location.distanceBetween())使用文森西公式。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-07 22:51:45

Haversine是一种更简单的计算,但它不能提供Vincenty提供的高精度。

Vincenty更准确,但计算也更密集,因此执行速度会更慢,并会增加电池使用量。

对于任何“更好”的东西,都是你的特定应用程序的问题。对于您的应用程序,Vincenty可能是比Haversine“更好”的选择,但对于不同的应用程序,Haversine可能是更好的选择。您将不得不查看您的用例的细节,并根据您在那里找到的内容做出决定。

票数 21
EN

Stack Overflow用户

发布于 2016-07-30 00:01:10

Haversine和Vincenty是解决不同问题的两种算法。Haversine计算球体上的大圆距离,而Vincenty计算旋转椭球曲面上的最短(测地线)距离。所以你的问题的答案可以分为两个部分:

  1. 你想计算椭球面上球面上的距离吗?
  2. 在计算给定问题时,哈维正弦或文森锡的精度如何?

对于陆地应用,旋转椭球是“平均海平面”的合理近似值;误差为±100米。这个椭球体的扁平度很小,约为1/300,因此可以近似为一个球体(例如,等体积的球体)。

大圆距离与测地线距离相差高达0.5%。在某些应用中,例如从好望角到开罗的距离是多少?,这个误差可以忽略不计。在其他应用中,例如,确定海洋边界,它太大了(在1公里的距离上是5米)。通常,使用测地线距离更安全。

如果您感兴趣的是行驶的距离(汽车、船或飞机),那么所采用的路径有许多约束,无论是大圆还是测地距离,都不适合测量理想曲面上最短路径的长度。

关于算法是否准确的问题:

哈弗正弦是精确的四舍五入,除非这些点几乎是相反的。Wikipedia article on great-circle distances中给出了更好的公式。

Vincenty通常精确到0.1毫米。然而,如果这些点几乎是对极的,则算法不能收敛,并且误差要大得多。针对Algorithms for geodesics中的测地问题,给出了一种较好的求解算法。另请参阅Wikipedia article on geodesics on an ellipsoid

解决测地线问题比解决大圆问题要慢。但是它仍然非常快(每次计算大约1μ),所以这不应该成为选择大圆距离的理由。

ADENDUM

Here是一个Java包,它实现了我的测地距离算法。与Vincenty的方法不同,这是精确的舍入,并且在任何地方都收敛。

票数 55
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38248046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档