9

アルゴリズムに小さな問題があります。

私はAndroidアプリケーションを開発しています。GPS座標を取得します。例:緯度:23.23907、経度:50.45786

だから私はポイントを得る。このポイントのプラスマイナス5メートルの境界の詳細を計算したいと思います。すなわち:

[23.23907 - 5 meters ; 23.23907 + 5 meters]
[50.45786 - 5 meters ; 50.45786 + 5 meters]

この計算を行う方法は?

どうもありがとうございます!

4

2 に答える 2

17

南北および東西方向のみで作業する場合、半正矢関数は大幅に簡略化できます。

地球の円周がCの場合、特定のポイントの南にdキロメートルのポイントは、南に360 * d/C度です。東にdキロメートルの地点は、東に360 * d /(C * cos(緯度))度です。分母の余弦は、特定の緯度での経度の長さが赤道よりもその分短いという事実に由来します。

したがって、地球の円周が40075.04 kmの場合、南北に5 m移動するには、緯度から0.0000449を加算/減算し、同じ経度を使用します。西/東に5m移動するには、同じ緯度を使用し、経度に0.0000449 / cos(latitude)を加算/減算します。ただし、エッジケースを忘れないでください。極の近くでは緯度を90°にクランプする必要があり、経度の180°の近くでは経度を正しい範囲に保つために360°を加算または減算する必要があります。

あなたの数で、範囲はおおよそであることがわかります:

latitude:  [23.23903 ; 23.23911]
longitude: [50.45781 ; 50.45791]

更新:これでも、地球は完全な球体であると想定されていますが、そうではないことに注意してください。たとえば、GPSシステムは、地球を楕円体としてモデル化します。赤道は6378.137 kmにあり、極は地球の中心から6356.7523142kmにあります。違いは約1/300であり、多くのアプリケーションにとって非常に重要ですが、この場合、誤差の範囲内です。

緯線はまだ円であるため、経度の式を修正するのは簡単ですcos(latitude)。正しい係数と交換する必要があります。子午線は円ではなく楕円であり、楕円の弧長は初等関数を使用して計算できないため、正しい緯度を計算するのは困難です。したがって、近似を使用する必要があります。

于 2013-03-07T07:35:55.250 に答える
7

非常に重要なコメントを追加したいと思います

。コサインは、度ではなくラジアンで緯度に対して計算されます。

変換: ラジアン = PI / 180 * 度

于 2015-01-09T12:10:49.990 に答える