TrailCam

ガイド

GPS座標2点間の距離はどう計算するのか

GPSの座標は緯度と経度の数値の組にすぎないので、2点間の距離を求めるとき、方眼紙の上の2点のように扱いたくなる——それぞれの差を取り、二乗して、足して、平方根を取る。だがその近道は誤っている。しかも誤差程度の話では済まない。緯度と経度は球面上の角度であって平面上の位置ではなく、実際の距離計算は最初の一歩からそのことを踏まえて組み立てられている。

結論から

2つの緯度経度の組を距離に変換する標準的な方法は大圏距離の計算式——多くの登山・地図系ソフトが実際に使っているのはハーバーサイン(haversine)の式——で、2点を球面上の点とみなし、その球面に沿った最短の弧の長さを求め、地球の半径を掛けて実際の距離にする。両方の座標をラジアンに変換したうえで決まった順序の三角関数を通し、2点間の直線距離を返す。これはどこかの登山道や道路に沿った距離ではなく、あくまで一方の地点からもう一方の地点までの最短の隔たりでしかない。

平面での近道がうまくいかない理由

緯度1度が表す距離は地球上どこでもほぼ同じで、およそ111キロメートルになる。ところが経度1度が表す距離は同じではない。赤道付近では同じくらい111キロメートルだが、北極や南極に近づくにつれてゼロに近づいていく。経線は極に向かって収束していくからだ。この違いを無視して緯度も経度も同じ1度として扱うと、熱帯から離れた場所での計算は実際の距離からずれ始める——低緯度ではわずかに、高緯度になるほど大きく。ピタゴラスの定理を使う近道は「どの方向でも1度は1度」という平面の方眼を前提にしているが、緯度と経度はそもそもその前提どおりにはできていない。

大圏距離の式はこの問題をそもそも避けている。座標を方眼上の位置として扱うのではなく、角度そのものを、それが本来描いている曲面の上でそのまま扱うので、緯度の高低に応じた補正を別に用意する必要がない。

この計算に実際に必要なもの

どの版の式も出発点は同じ4つの数字だ。1点目の緯度と経度、2点目の緯度と経度——それぞれ度からラジアンに変換したうえで計算が始まる。そこから先はサイン、コサイン、逆正接を決まった順序で組み合わせる計算で、地球の中心から見た2点間の角度がひとつ求まる。その角度に地球の平均半径を掛ければ、半径に使った単位での実際の距離になる。

この計算に必要なのは2組の座標だけで、それ以上は要らない。途中の点も、標高も、2点の間の地面に何があるかも必要ない。あくまで球面上の2つの位置だけから決まる計算だ。

近くの2点なら簡略化してもいい

本格的な球面三角法が効いてくるのは長距離の場合で、2点の間で地球の丸みが無視できないほど大きく表れるときだ。登山道上の連続する2点——数メートル離れ、数秒おきに記録される点どうし——は互いに近すぎて、実用上はその間の地表を平らとみなしてよい。その緯度でのみ経度1度分の実距離を補正するだけの、単純な平面近似でも、大圏距離の答えとの差はGPS受信機自体の誤差より小さくなる。多くの登山記録アプリが点と点の間で実際に走らせているのはこの簡略版で、計算コストが軽く、登山の距離感で失うものが何もないからだ。

山行の合計距離とは結局これのこと

記録されたルートはひとつの距離計算の結果ではない。同じ2点間計算がトラック中の連続する点のペアすべてで実行され、その結果がすべて足し合わされたものだ。1秒おきに1時間記録した山行なら、点はおよそ3,600個、それに近い数の小さな距離計算が端から端までつながっている。山行終了時の合計距離は、それらをすべて足しただけの数字にすぎない。だからこそ距離は一度きりの測定値ではなく積み上げていく数字であり、連続する点のペアすべてがこの計算を通り終えて初めて存在する。

そして同じ理屈から、これは斜面に沿った距離ではなく水平方向の距離になる。計算が使うのは緯度と経度だけで、標高はどこにも出てこないからだ。まったく同じ座標をたどる急な登りと平らな道は、同じ距離として出てくる。計算のどこにも標高を読む場所がないのだから当然と言える。

つまずきやすいところ

  • 2つの座標をそのまま引き算して距離だと思い込む——座標の差は角度であって距離ではなく、正しく距離に変換するには2点が地球上のどこにあるかが関わってくる。
  • 緯度・経度にそのままピタゴラスの定理を当てはめる——これは平面上でしか成り立たず、緯度経度は球面上の位置を表すので、赤道から離れるほど誤差が大きくなる。
  • 三角関数にかける前に度をラジアンに変換し忘れる——多くの実装はラジアンを前提にしていて、度のまま入れるとそれらしく見えるだけで実際の距離とは違う数字が出てくる。
  • 結果に標高差が反映されていると思い込む——大圏距離は地表に沿って測られる、山行の合計距離と同じ水平方向の扱いなので、同じ2点間でも急な道と平らな道は同じ距離になる。

TrailCamの場合

TrailCamは記録中、この同じ2点間計算を絶え間なく実行し、山行中に表示される合計距離に小さな距離を次々と積み上げていく。GPX 1.1の書き出しには記録したすべての点の緯度・経度・標高が丸めずにそのまま入っているので、その気になれば同じ距離をファイルから自分で計算し直して確かめることもできる。GPX書き出しは任意のTrailCam Proに含まれる機能で、アプリ自体のダウンロードは無料です。

よくある質問

GPSの距離計算でいちばんよく使われる式は何ですか?
多くの登山・地図・GISソフトが使っているのはハーバーサインの式です。両方の座標を球面上の点として扱い、大圏距離——地表に沿った最短経路——を返します。地面を突き抜ける直線距離ではありません。
2つの緯度経度をそのまま引き算すれば距離になりますか?
なりません。2つの座標の差は角度であって、それを実際の距離に変換するには2点が地球上のどこにあるかが関わってきます。経度1度が表す実際の距離は赤道から離れるほど小さくなるからです。
GPS座標2点間の距離の計算には標高差が含まれますか?
標準的な大圏距離の計算は緯度と経度だけから求められ、標高は含まれません。山行の合計距離が急な登りでも伸びない、水平方向だけの数字になっているのも同じ理由です。

自分のルートを記録する

TrailCam は iPhone 用の GPS ルート記録アプリです。動画・写真・音声メモを撮ったその地点に紐づけて保存し、GPX 1.1 または CSV で書き出せます。ダウンロードは無料です。

App Store でダウンロード