2012-04-12 143 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