2地点間の距離の計算

座標の変換の式を使い、必要なタイルを取得することで、地図の表示ができるようになります。

ただ、これだけでは1/25000地形図を作成することができません。それは、2地点間の距離が分からないためです。1/25000地形図を作成するためには、2地点間の距離を計算して、用意すべき地図画像の範囲を求める必要があります。

しかし、地上の2地点間の距離は、どのように計算すればよいのでしょうか。

調べてみると、国土地理院のサイト計算式が載っていました。恐ろしく複雑で長い式です。私には全く理解できず、プログラムでどうやって記述してよいのかも分かりません。

もう少し調べると、Vincentyの式というものが見つかりました。こちらは、こんな計算をするようですが、先ほど同様、とても複雑な式になっています。プログラムのソースを見ても、ループなどがあり計算が重そうです。

これらの式を使うと、何百キロも離れた地点の距離をmm単位で求められるそうです。しかし、地形図を作成したり、山行ルートの距離計算をするのであれば、そこまでの精度は必要ありません。

もっと簡単な計算式がないものかとネットを探すと、複数のサイトでヒュベニ(Hubeny)の公式というものが見つかりました。

ヒュベニの公式

この式は、先ほどの2つの式と比べると、かなりシンプルです。地図ソフトで有名なカシミール3Dでも使われているなど、様々なソフトで使われていて実績があるようですから、これを使わせてもらうことにします。

ヒュベニの公式

ヒュベニの公式

この式の中で、分からない値は、長半径、短半径だけです。地球を楕円体として計算するため、長い方の半径(赤道半径)と、短い方の半径(極半径)が必要になるようです。遠心力が働くことから、地球は横長の楕円体になっているというのは、聞いたことがあります。

長半径(赤道半径)と短半径(極半径)は、Wikipediaによると、以下のように決められています。

測地系 発表年 長半径(m) 短半径(m)
Bessel 1841年 6,377,397.155 6,356,079
GRS80 1980年 6,378,137.000 6,356,752.314 140
WGS84 1984年 6,378,137.000 6,356,752.314 245

この表の測地系というのは、緯度と経度によって、地球上の位置を表すために決められたシステムのことで、各国で色々な測地系が存在するらしいです。国際測地学協会などが定めたGRS80とアメリカ国防省が策定したWGS84が、世界的に使われているとのことです。

よく見るとGRS80とWGS84の値は、ほとんど同じです。長半径は全く同じで、短半径が0.105mm違うだけです。地球の半径の違いが1mm以下とは、どんな計算をしているのでしょうか。

GRS80とWSG84で、ほぼ同じ値ですので、どちらを使っても得られる結果はほとんど同じです。TrailNoteでは、GoogleマップやGPSで用いられている、WGS84の値を使うことにします。

これで、2点の座標(緯度、経度)から、2点間の距離が求められるようになりました。

このヒュベニの公式で求めた結果の精度については、こちらで確認しています。