【JavaScript】地球上の2地点間の距離を取得するアルゴリズム比較

概要

以前、地球上の2地点間の距離を計算する実装を行なTたことがあったが、改めて2つのアルゴリズムを実装し比較してみる。

ソース

「ヒュベニの公式」 と 「球面三角法」 を比較。
ヒュベニの公式はは一般的に使われる計算方法らしい。
球面三角法は割とラフな方法であるが、GoogleMapsAPIでも使われているらしい。(?)

以下、ソース

結果

国土地理院のサイトの計算結果と一緒に2つの実装を比較してみた。

※単位 : m

東京-川崎

東京(35.689487, 139.691706) 〜 川崎(35.5562073, 139.5723855)

球面三角法 : 18317.126210821592
ヒュベニ    : 18349.45459166647
------------------------------
地理院    : 18317.122

数メートルの誤差が生じる。

東京-名古屋

東京 〜 名古屋(35.2, 136.9)

球面三角法 : 259215.96201641572
ヒュベニ    : 258964.81739383226
------------------------------
地理院    : 259205.815

1km未満ではあるが誤差が生じた。

東京-ギニア湾

東京 〜 ギニア湾(0.0, 0.0)

球面三角法 : 15324766.692400709
ヒュベニ    : 14278853.174450254
------------------------------
地理院    : 14274245.589

まとめ

実用(数キロ程度の距離の計算)では、球面三角法でも問題なさそう。
とりあえず、地理院のサイトはヒュベニの公式を使っていると思われる。ヒュベニの公式と地理院の結果の間でわずかに生じる誤差はパラメータ(測地系による)の差か!?

参考

https://keisan.casio.jp/exec/system/1257670779
https://qiita.com/chiyoyo/items/b10bd3864f3ce5c56291
https://qiita.com/port-development/items/eea3a0a225be47db0fd4