ホームページ  >  記事  >  【数式と導出】経度と緯度から地上の2点間の距離を計算します。

【数式と導出】経度と緯度から地上の2点間の距離を計算します。

藏色散人
藏色散人転載
2020-10-22 11:38:493586ブラウズ

1. 仮定: 地球は完全な球体です。地上の 2 点 A と B の経度座標は (Aj, Aw)、緯度座標は (Bj, Bw) であり、地球の平均半径 R は 6371km です。

2. 3 次元直交座標系を確立します:

地球の中心は原点 O、地球の軸は Z 軸、北極です方向が Z 軸の正の方向、赤道面が X 軸と Y 軸が位置する平面で、この平面上で地球の中心から経度 0 度に向かう方向が正になりますX 軸の正の方向と Y 軸の正の方向は右手の法則に従って決定されます。

点Aの3次元座標を(Ax, Ay, Az)、点Bの3次元座標を(Bx, By, Bz)とする。 3. 考え方

: 3 点 A、B、O が地球と交わる平面は半径 R の円を形成します。AB 間の地上距離を求めるには、円上の円弧AB。円弧の長さは半径と中心角の積に等しいことが式からわかります。

Rが決まるので、OAとOBのなす角度θが分かれば、円弧ABの長さが求まります。円弧AB=R*θ。

角度 θ は、次のベクトル式で取得できます:


ベクトル OA*ベクトル OB=|OA||OB|cosθ。

then

cosθ=向量OA*向量OB/|OA||OB|
     =(Ax*Bx+Ay*By+Az*Bz)/R*R

4. 経度と緯度の座標を使用して 3 次元の直交座標を表現します:

Ax=R*cosAw*cosAj
Ay=R*cosAw*sinAj
Az=R*sinAw
Bx=R*cosBw*cosBj
By=R*cosBw*sinBj
Bz=R*sinBw

を に代入して

cosθ=cosAw*cosAj*cosBw*cosBj+cosAw*sinAj*cosBw*sinBj+sinAw*sinBw
     =cosAw*cosBw(cosAj*cosBj+sinAj*sinBj)+sinAw*sinBw
     =cosAw*cosBw*cos(Aj-Bj)+sinAw*sinBw
θ=arccos[cosAw*cosBw*cos(Aj-Bj)+sinAw*sinBw]

5 を取得します。要約すると、経度と緯度に基づいて計算できます。 地上の 2 点間の距離の公式:

弧AB=R*arccos[cosAw*cosBw*cos(Aj-Bj)+sinAw*sinBw]

説明:

誰もが同様の公式の導出を行っています。久しぶりに書くと忘れてしまうこともあるかもしれないのでメモしておきました。

三角関数は多くの変換を行うため、式は複数の形式で表現できます。前提条件が同じである限り、それらは数学的に等価であり、相互に演繹することができます。

実際のプログラムコードで使用する場合は、ロケータから得られる経度や緯度の単位が度であり、三角関数の計算方法ではラジアンが使用される可能性が高いなど、単位の問題に注意する必要があります。長さの単位がkmかmか、お待ちください。


推奨: 「

プログラミング ビデオ

以上が【数式と導出】経度と緯度から地上の2点間の距離を計算します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。