0

現在地の緯度経度から任意の距離離れた緯度経度を求める方法

1927
1

Vincenty法

Vincenty法は地球を回転楕円体として2点間の距離を近似する反復計算アルゴリズムである
このアルゴリズムには順解法と逆解法が存在する

順解法

始点座標と視点からの方位角、距離から終点座標を求めるアルゴリズム

逆解法

2点の座標から方位角と距離を求めるアルゴリズム
逆解法に関しては本テーマとはずれているため説明はしない

順解法の内容

定義

本記事では以下のように定義している

a=6378137.06 赤道半径
f=1298.257223563 扁平率
b=(1f)a 極半径
ϕ1,ϕ2 各点の緯度
L1,L2 各点の経度
L=L2L1 経度の差
U1,U2 補助球上の経度
λ1,λ2 補助球上の緯度
α1,α2 各点における方位角
α 赤道上での方位角
s 2点間の距離
σ 補助球上の弧の長さ

アルゴリズム

まず初めに以下の計算を行う
U1=arctan((1f)tanϕ1)σ1=arctan(tanU1cosα1)sinα=cosU1sinα1cos2α=1sin2αu2=cos2αa2b2b2A=1+u216384{4096+u2[768+u2(320175u2)]}B=u21024{256+u2[128+u2(7447u2)]}
次にσ=sbAで初期化し、以下の反復計算を収束するまで行う
2σm=2σ1+σΔσ=Bsinσ{cos(2σm)+14B[cosσ(1+2cos2(2σm))16Bcos(2σm)(3+4sin2σ)(3+4cos2(2σm))]}σ=sbA+Δσ
σが任意の精度まで収束したら以下の計算を行う
ϕ2=arctan(sinU1cosσ+cosU1sinσcosα1(1f)sin2α+(sinU1sinσcosU1cosσcosα1)2)λ=arctan(sinσsinα1cosU1cosσsinU1sinσcosα1)C=f16cos2α[4+f(43cos2α)]L=λ(1C)fsinα{σ+Csinσ[cos(2σm)+Ccosσ(1+2cos2(2σm))]}L2=L+L1α2=arctan(sinαsinU1sinσ+cosU1cosσcosα1)

終わりに

自力で計算するのはなかなか大変ですが、「こうゆう方法があるよ」という程度で覚えておくと後々役に立つかもしれません
今後、このアルゴリズムを実装したプログラムも紹介するつもりです

投稿日:2020114
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

Mathlogの開発者の1人です

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中
  1. Vincenty法
  2. 順解法
  3. 逆解法
  4. 順解法の内容
  5. 定義
  6. アルゴリズム
  7. 終わりに