Vincenty法

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

Vincenty法: Vincenty's formulae)とは楕円体上の2点間の距離を計算する測地法反復計算アルゴリズムである。サディアス・ヴィンセンティ英語版 (1975a)によって考案された。

概要[編集]

Vincenty法は地球形状を回転楕円体として近似したものである。これは、地球を球体として近似する大円距離より精度が良い。

順解法(direct method)はある点からの距離と方位角により、他の点を求めるものである。逆解法(inverse method)は2点間の楕円体面上距離と方位角を求めるものである。これらは地球楕円体において0.5 mm(0.020″)以下という誤差の小ささから広く用いられる。

背景[編集]

Vincentyの目的は当時すでに存在していた楕円体上の測地法アルゴリズムのプログラムの長さを最小化することであった。彼の未発行のレポート(1975b)によれば数キロバイトのメモリしか搭載していないWang 720 電卓を使用した。長距離において良い精度を得るために、伝統的な補助球を用いた手法(Legendre (1806), Bessel (1825), and Helmert (1880))を使用している。また、Vincentyの手法はRainsford (1955)による解法にも依存している。Legendreは楕円体上の測地は緯度を更成緯度とし、方位角を同じものとすることで補助球の大円上に正確に対応させられることを示した。 楕円体上の経度と距離は単純な積分によって、補助球上の経度とその大円上の弧の長さから導かれる。BesselとHelmertはそれらの積分について収束の早い数列を与えた。それにより測地計算が任意の精度で行えるようになった。

プログラムサイズを最小化するためにVincentyはこれらの数列を初項を小さな値とする拡張しのオーダーで打ち切った。これにより、経度と距離の積分式は簡潔なものとなった。式は入れ子型(ホーナー法)にし、一時レジスタを1つだけ用いて多項式計算を行えるようにした。そして、単純な収束計算を陰関数を解くのに用いた。これは収束が遅くinverse法では収束しないこともありうるが、コードサイズは小さいものとなった。

表記法[編集]

以下のように定義する。

長軸半径 (赤道半径) (6378137.06 m (WGS84) )
扁平率 (1/298.257223563 (WGS84) )
短軸半径 (極半径) ( 6356752.314245 m (WGS84) )
各点の緯度

更成緯度 (補助球上の緯度)
2点間の経度
補助球上の経度
各点における方位角
赤道上での方位角
 
2点間の楕円体上の距離
 
補助球上の弧の長さ

逆解法[編集]

逆解法は楕円体上の2点の座標が与えられた時に、方位角と距離を導く。

及びを計算し、で初期化し、以下の計算をが収束するまで反復する。


[1][2]
[3]
[4]

が所望の精度まで収束したら(10-12の偏差ならば0.06 mmの精度)以下の計算を行う。

[2]
[2]

両極付近の2点間の計算は最初のを設定した際に以上となると、収束しない。

順解法[編集]

順解法は始点と始点における方位角、距離が与えられた時の終点の座標と方位角を導く。

まず、以下の計算を行う。

[2]

で初期化し、以下の収束するまで反復計算を行う。

が所望の精度まで収束したら以下の計算を行う。

[2]
[2]
[2]

始点が極点である時、最初の等式は不定となる。 始点の方位角が真西か真東の場合2番目の等式は不定となる。 しかし、2変数関数のatan2等を用いることでこれらの値は正しく計算できる。

Vincentyによる修正[編集]

Vincenty自身の論文(1979)によると、をHelmertの展開係数を用いて以下のより簡潔な形式で表すことを提案した。

ここで、である。

対蹠付近の点[編集]

先に触れたように、逆解法の反復計算は対蹠点付近において、収束しなかったり、収束が遅かったりする。例えば、WGS84測地系においてであるとする。この計算は1 mmの精度に達するまでに130回の計算が必要になる。逆解法がどのように実装されるかによって、計算結果は正しく19936288.579 mを返したり、間違った結果を返したり、エラーとなったりする。例えばNGS online utilityによる計算結果は5 kmも長い。Vincentyが提案した方法はこのような場合に収束を速める(Rapp, 1973)。

逆解法が収束しない例としてがある。Vincentyの未出版のレポート(1975b)によると、異なった手法がそのような状況に適しており、60回の反復計算の後に19944127.421 mという正しい計算結果に達した。しかし、この手法は他の多くの場合において何千回もの反復が必要となる。

ニュートン法は全ての入力点にに対して収束が速い(Karney, 2013)。

関連項目[編集]

注釈[編集]

  1. ^ は赤道及び極付近での精度を保つためにから直接計算は行わない。
  2. ^ a b c d e f g arctanの値は2変数関数であるatan2等によって実装されるべきである。
  3. ^ の時、が不定となる。これは2点が同じ位置もしくは対蹠点であることを意味する。
  4. ^ 2点がともに赤道上にあるとき、となるので、は使用されない。The limiting value is .

参考文献[編集]

外部リンク[編集]