【发布时间】: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