【问题标题】:GIS - Get weird result when calculating distance between two pointsGIS - 计算两点之间的距离时得到奇怪的结果
【发布时间】:2019-05-15 05:46:15
【问题描述】:

我使用算法(参见:calculating distance between two points)来计算两点之间的距离。但它得到错误的结果,请参阅 Java 代码:

/**
 * group1:set latitude to 89
 */
// set longitude1 = 0, longitude2 = 1
System.out.println(distance(89, 89, 0, 1, 0 , 0)); // 1941.0            result1

// set longitude1 = 0, longitude2 = 2
System.out.println(distance(89, 89, 0, 2, 0 , 0)); // 3881.0            result2

// set longitude1 = 0, longitude2 = 179
System.out.println(distance(89, 89, 0, 179, 0 , 0)); // 222381.0        result3

// set longitude1 = 0, longitude2 = 180
System.out.println(distance(89, 89, 0, 180, 0 , 0)); // 222390.0        result4

/**
 * group2:set latitude to 0
 */
// set longitude1 = 0, longitude2 = 1
System.out.println(distance(0, 0, 0, 1, 0 , 0)); // 111195.0            result5

// set longitude1 = 0, longitude2 = 2
System.out.println(distance(0, 0, 0, 2, 0 , 0)); // 222390.0            result6

// set longitude1 = 0, longitude2 = 179
System.out.println(distance(0, 0, 0, 179, 0 , 0)); // 19903892          result7

// set longitude1 = 0, longitude2 = 180
System.out.println(distance(0, 0, 0, 180, 0 , 0)); // 20015087          result8

在第 1 组中:

a = 结果2 - 结果1 = 1940

b = 结果4 - 结果3 = 9

在第 2 组中:

c = 结果6 - 结果5 = 111195

d = 结果8 - 结果7 = 111195

这很奇怪。 c = d, group2 是对的,但是a ≠ b, group1 是错的。

我该如何解决这个问题? 是否有其他更高精度的算法来计算两个坐标点之间的距离

【问题讨论】:

    标签: java gis distance latitude-longitude


    【解决方案1】:

    嗯,结果是近似值 - 如果您想要更高的精度,您需要使用球体计算,而不是公式使用的球体计算。

    但我认为这根本不重要。你得到的结果是正确的,精度很好,我认为问题不在于结果的精度,而是你对这些距离的期望。

    这些是测地线距离 - 球体上的最短距离,因此关于平面地图上的距离的直觉在这里并不总是有效。您可以在例如可视化测地线https://academo.org/demos/geodesics/ 以获得更好的直觉。

    首先,result2 和 result1 与 result6 和 result5。您可能已经注意到,result6 恰好是 result5 的两倍,但 result2 略小于 result1。为什么是这样?因为从 (89, 0) 到 (89, 2) 的测地线不经过 (89, 1),而是稍微向北一点。

    从 (89, 0) 到 (89, 180) 的测地线穿过北极 - 所以它与从 (89, 0) 到 (89, 1) 的测地线的 180 倍有很大不同。

    另一方面,在纬度 0 处,测地线始终遵循赤道。或者在对映端 0, 0 和 0, 180 的情况下 - 所有测地线都具有相同的长度。因此,在这种特殊情况下,您对距离关系的期望是正确的。

    【讨论】:

      猜你喜欢
      • 2019-05-12
      • 2010-10-30
      • 2011-04-23
      • 2014-11-14
      • 1970-01-01
      • 2017-02-21
      相关资源
      最近更新 更多