
2点間距離の計算式くらべ — ヒュベニ・Vincenty・Karney
「2点の緯度経度から距離を求める」という、測量アプリでは日常的に使う計算にも、実はいくつもの流派があります。子午線弧長や投影の式と同じく、地球が完全な球ではなく楕円体であることが計算をややこしくしている元凶です。今回は、実務でよく名前が挙がる3つの手法——ヒュベニの公式・Vincenty法・Karneyのアルゴリズム——を、精度と計算コストの観点で比較します。
そもそも何を計算したいのか
2点間の「距離」といっても、地図アプリの多くが求めているのは直線距離ではなく、楕円体面に沿った最短経路——測地線距離です。地球を完全な球として扱えるなら、中心角と半径から一発で距離が求まりますが(球面三角法・大圏距離)、実際の地球は赤道方向にやや膨らんだ回転楕円体なので、緯度によって曲率半径が変わり、単純な球面公式では数百m級のズレが生じることがあります。

ヒュベニの公式 — 簡易だが実務での定番
日本の測量・GIS分野で古くから使われてきたのがヒュベニの公式です。2点間の緯度差・経度差が小さいことを前提に、その区間を微小な平面とみなして近似する考え方で、式がシンプルなため実装・計算コストの面で扱いやすいのが特徴です。
ただし前提が「2点が近い」ことなので、数百km・数千kmといった長距離になるほど誤差が大きくなります。国内の近距離間(同一都道府県内など)であれば実務上十分な精度が出ることが多く、GISツールや測量ソフトの簡易距離計算で今も広く使われています。
Vincenty法 — 反復計算による高精度化
1975年にThaddeus Vincentyが発表したVincenty法は、楕円体面上の測地線問題を反復計算で解く手法です。ヒュベニの公式のような「近距離の近似」ではなく、原理的には任意の2点間(対蹠点に近い特殊なケースを除く)で高精度な測地線距離を求められます。
実測比較では、Vincenty法の計算誤差はサブミリメートル〜0.5mm程度に収まるケースが多いとされ、ヒュベニの公式より精度面で優位です。ただし反復計算であるがゆえに、ほぼ地球の反対側に近い2点(対蹠点付近)では収束しない、または収束が極端に遅くなるという既知の弱点があります。逆変換を反復で解くGeoCoreJPの設計と同様、反復法には「収束しないケースにどう対処するか」という設計上の宿題が常について回ります。
Karneyのアルゴリズム — 現在の実務標準
2013年にCharles F. F. Karneyが発表したアルゴリズムは、Vincenty法の弱点だった対蹠点付近の収束問題を解決し、精度・計算速度の両面でVincenty法を上回るとされています。このアルゴリズムを実装したオープンソースライブラリGeographicLibは、多くのGISソフトウェアや測量系ライブラリで採用が進んでおり、長距離・高精度が求められる場面での事実上の標準になりつつあります。
つまり流れとしては、ヒュベニの公式(簡易・近距離向け)→ Vincenty法(高精度だが対蹠点で弱い)→ Karneyのアルゴリズム(高精度かつ安定)という順で、精度と計算の安定性が段階的に向上してきた歴史があります。
使い分けの目安
| 手法 | 得意な距離帯 | 精度 | 弱点 |
|---|---|---|---|
| ヒュベニの公式 | 近距離(同一都道府県程度) | 近距離では実務上十分 | 長距離で誤差拡大 |
| Vincenty法 | 中〜長距離 | サブミリ〜0.5mm程度 | 対蹠点付近で収束しない場合あり |
| Karneyのアルゴリズム(GeographicLib) | 全距離帯 | Vincenty法以上 | 実装がやや複雑 |
GeoCoreJPのように国内の座標変換・距離計算を主目的とするエンジンでは、対象となる2点間の距離が数百km程度に収まるケースが大半のため、ヒュベニの公式で十分実務に耐えるケースも多くあります。一方で、全国規模・国際規模の距離計算や、対蹠点に近い特殊な位置関係を扱う可能性がある場合は、Vincenty法やKarneyのアルゴリズムを検討する価値があります。
まとめ
- 2点間の「距離」の多くは、楕円体面に沿った測地線距離を意味する。
- ヒュベニの公式は近距離向けの簡易近似で、日本のGIS実務で古くから使われている。
- Vincenty法(1975年)は反復計算で高精度だが、対蹠点付近で収束しない弱点がある。
- Karneyのアルゴリズム(2013年、GeographicLib)は現在の実務標準で、精度・安定性ともに優れる。
- 距離帯・求める精度に応じて手法を選ぶのが実務的な判断になる。
関連記事
- 子午線弧長とは何か — 投影計算の心臓部(GeoConverterPro)
- ガウス・クリューゲル投影の式を読む(GeoConverterPro)
- 方位角と子午線収差角 — 座標北と真北の角度を計算する(GeoConverterPro)
- 国土地理院が「繰り返し計算のいらない」新算式を公開(GeoConverterPro)
- 座標から求めた距離が実測と合わない? — 平面直角座標系の縮尺係数0.9999を理解する(GeoConverterPro)
- 世界測地系ITRFとは — 地球規模の座標の「ものさし」を可視化して学ぶ(GeoPrism JP)
出典(参考):
– Vincenty法 — Wikipedia
– 二点間測地線距離(地球上):各計算方法の誤差評価 – Qiita
– 測地線距離計算式・計算ライブラリの精度評価 – 330k info
※本記事で紹介した精度・誤差の数値は、複数の紹介記事・検証記事で言及されている一般的な数値であり、GeoCoreJP自体の実測検証値ではありません。
開発者より: アプリ・Kindle本・オープンソースの一覧は GitHub: amru195704 にまとめています。
お願い
本記事の情報は参考目的で掲載しており、正確性・完全性を保証するものではありません。誤記・不正確な情報がございましたら、コメント欄よりご指摘いただければ、確認のうえ修正いたします。
アプリを入手(App Store):GeoConverterPro(座標変換) | GeoPrism JP(測地系の可視化・学習)
コメントを残す