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

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

藏色散人
リリース: 2020-10-22 11:39:09
転載
3644 人が閲覧しました

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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート