2012-04-12 140 views
0

发现了很多问题的答案,如何计算经纬度的距离,什么也不是“反向”问题。从距离计算经度

我有一个位移在X和Y和一个GPS点(纬度/经度),但需要一个新点的计算坐标。

使用公式:

double deltaLat = dy/EARTH_RADIUS; 
double deltaLon = dx/EARTH_RADIUS; 
double lat = locLat + Math.signum(dy) * Math.toDegrees(deltaLat); // formula correct 
double lon = locLon + Math.signum(dx) * Math.toDegrees(deltaLon); 

这是准确的计算范围,但为东经我得到约10 – 15%的误差。 有没有人有同样的问题?任何可能的公式来计算位移经度?

+0

位移你有,但在哪个方向 – vipin 2012-04-12 11:13:54

回答

0

最简单的,但不是最好的解决办法是:

double deltaLat = dy/EARTH_RADIUS; // up-down 
double deltaLon = dx/EARTH_RADIUS ; // left-right 
double lat = locLat + Math.signum(dy) * Math.toDegrees(deltaLat); // formula correct 
double lon = locLon + Math.signum(dx) * Math.toDegrees(deltaLon * 1.195); 
1

你经度上10-15%误差的原因是因为经度上你不能用地球半径来计算你的位移。相反,您需要在相应的纬度上使用“圆”的半径。因此,使用公式您的经度计算应该更像

double deltaLon = dx/(EARTH_RADIUS * cos(locLat)) 

然而,这可能会给你身边的极不想要的结果,因为cos(locLat)将接近0,所以你可能想为两极某些特殊情况下(甚至在他们周围)。从逻辑上讲,如果你考虑一下,如果你在杆子上,沿x轴移动任何距离都不会在任何地方得到。

+0

而不是百米我与经度间公式-150meters。我认为你的配方不太好,当我们接近极点时,情况会变得更糟。 – 2012-04-13 07:29:02