我试图用毕达哥拉斯公式计算两点之间的短距离(4-5米),但我得到的结果如1.1979775925924383E7, 1.1979777593853703E7, 1.1979940093453636E7
两点之间的距离。这是什么意思?
我将这个80.234578的纬度和经度传递给函数,后面还有6位数的逗号。
private double pyth(double lat1, double lon1, double lat2,
double lon2) {
final int R = 6371 * 1000; // Radious of the earth in meter
double x = toRad(lon2-lon1);
double y = toRad(lat1+lat2);
double distance = Math.sqrt(x*x+y*y)*R;
return distance;
}
private double toRad(double value) {
return value * Math.PI / 180;
}
答案 0 :(得分:1)
答案 1 :(得分:0)
你需要考虑纬度的差异,而不是总和。这将给你答案只是略有错误,因为它假装地球是平的(经度应该乘以纬度的余弦)。我还将x
和y
更改为dx
和dy
,因为它更具描述性。
private double pyth(double lat1, double lon1, double lat2, double lon2) {
final int R = 6371 * 1000; // Radius of the earth in meter
double dx = toRad(lon2-lon1)*Math.cos((lat1+lat2)/2);
double dy = toRad(lat1-lat2);
return Math.sqrt(dx*dx+dy*dy)*R;
}
private double toRad(double value) {
return value * Math.PI / 180;
}