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

答えて

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%の誤差が生じるのは、経度のために地球の半径を使って変位を計算することができないからです。代わりに、対応する緯度で「円」の半径を使用する必要があります。 cos(locLat)が0に近くなりますので、あなたは(極のためのいくつかの特殊なケースを持ちたいこととして、したがって、あなたの経度の計算がより

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

ようにする必要があり、あなたの数式を使用すると、しかし、これは、あなたにポールの周りに望ましくない結果を与える可能性またはそれらのまわりでさえ)。論理的に考えると、もしあなたがポールにいるならば、x軸に沿って任意の距離を動かすことは、とにかくどこにでもあなたを得ることはありません。

+0

代わりの100メートルで、私は経度の間にあなたの式で-150metersを取得します。私はあなたの数式がそれほど良くないと思うし、私たちが極に近づくと悪化する。 –

関連する問題