2013-03-06 52 views
6

小さなアルゴリズム上の問題があります。緯度/経度とメーター

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

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

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

この計算方法は?

ありがとうございました!

+2

チェックこれをアウト:http://stackoverflow.com/questions/639695/how-to-convert-latitude-or-longitude-to-meters – Trinimon

+0

可能な複製[ソースからある距離の座標を見つける](http:// stackoverflow.com/questions/14398378/finding-a-coordinate-at-some-distance-from-the-source) – Joni

答えて

14

南北方向および東西方向のみで作業する場合、haversineの式を大幅に簡素化できます。

地球の円周をCとすると、ある点からdkm南にある点は、360 * d/C度です。東にdキロメートルの地点は、東に360 * d /(C * cos(緯度))度です。分母の余弦は、赤道より短い所与の緯度で経度の長さがそれほど長くないという事実から来ています。 the Earth's circumferenceは40075.04キロである場合

だから、追加/緯度から0.0000449を減算と同じ経度を使用する北/南に5メートルを移動します。西/東に5m移動するには、同じ緯度を使用し、経度に0.0000449/cos(緯度)を加算/減算します。エッジのケースについては忘れないでください。極近辺では緯度を90°に、緯度を180°に近づけなければならないので、正しい範囲で経度を維持するには360°を加算または減算します。

範囲は約であることが判明し、あなたの番号を持つ:

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

更新:注これはまだ地球は完全な球体、which it's notであることを前提としていること。例えば、GPSシステムは、赤道が6378.137kmにあり、極が地球の中心から6356.7523142kmにある楕円体として地球をモデル化します。その差は約1/300であり、多くのアプリケーションで大きな問題になりますが、この場合は誤差の範囲内です。

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

+0

ありがとう、これは簡単です! – Apaachee

+0

@AntoineMathys:正しい、私はそれについてのメモを追加しました。 – Joni

4

私は(初心者のためのまたはこれを忘れてしまった人のために)非常に重要なコメントを追加したいと思います:

余弦はラジアンではなく度で緯度で計算されます。

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


(私は答えを作るために自分を謝罪、しかし、35の私の現在の評判で、私はコメントを投稿することはできません)