地球上の2点間の距離を正確に知りたいと思ったことはありませんか?旅行の計画、物流の最適化、あるいは単に地理への好奇心から、緯度と経度を使った距離計算は私たちの生活の様々な場面で役立ちます。しかし、地球は完全な球体ではないため、その計算は一見すると複雑に思えるかもしれません。本記事では、緯度経度から距離を計算するための主要な公式とその進め方を、分かりやすく解説します。
緯度と経度とは?地球上の位置を示す基本

地球上のあらゆる場所を特定するために使われるのが緯度と経度です。これらは、まるで地図上の住所のような役割を果たします。正確な距離計算を理解するためには、まずこの緯度と経度の基礎知識をしっかりと押さえることが大切です。
緯度と経度の基礎知識
緯度は、地球の赤道を基準(0度)として、南北にそれぞれ90度まで測られる角度です。北半球は北緯(N)、南半球は南緯(S)で表され、例えば東京は北緯35度付近に位置します。一方、経度は、イギリスのグリニッジ天文台を通る本初子午線(0度)を基準として、東西にそれぞれ180度まで測られる角度です。
東半球は東経(E)、西半球は西経(W)で表され、東京は東経139度付近にあります。これらの緯度と経度の組み合わせによって、地球上の特定の一点を正確に指し示すことが可能になるのです。
なぜ地球上の距離計算は単純ではないのか
平面上の2点間の距離であれば、三平方の定理を使って簡単に計算できます。しかし、地球は球体(厳密には回転楕円体)であるため、単純な平面計算では正確な距離を求めることができません。地球の表面は曲がっており、緯度によって経度1度あたりの距離が変化するからです。例えば、赤道付近では経度1度あたりの距離が最も長く、極に近づくにつれて短くなります。
このような地球の特性を考慮せずに計算すると、大きな誤差が生じてしまうため、地球の形状を近似した複雑な計算式が必要となるのです。
緯度経度から距離を計算する主要な公式を理解する
地球上の2点間の距離を計算するには、いくつかの異なる公式が存在します。それぞれの公式には特徴があり、計算の精度や複雑さが異なります。ここでは、代表的な3つの公式について、その仕組みと計算式を見ていきましょう。
ハーバサインの公式(Haversine formula)の仕組みと計算式
ハーバサインの公式は、地球を完全な球体と仮定して2点間の大円距離(最短距離)を計算する方法です。比較的シンプルでありながら、実用上十分な精度が得られるため、多くのアプリケーションで利用されています。 この公式の大きな利点は、2点間の距離が非常に近い場合でも数値的な安定性が高いことです。
計算式は以下の通りです。
- まず、2点の緯度と経度をラジアンに変換します。
- 緯度の差 (Δφ) と経度の差 (Δλ) を計算します。
- 以下の式で ‘a’ の値を求めます。
a = sin²(Δφ/2) + cos(φ1) * cos(φ2) * sin²(Δλ/2)
- 次に、’c’ の値を求めます。
c = 2 * atan2(√a, √(1-a))
- 最後に、地球の半径 (R) を掛けて距離 (d) を算出します。
d = R * c
ここで、Rは地球の平均半径(約6371km)を使用するのが一般的です。
球面三角法の余弦定理を使った計算方法
球面三角法の余弦定理も、地球を球体と仮定して距離を計算する際に用いられる方法の一つです。ハーバサインの公式と同様に、2点間の大円距離を求めます。この方法は直感的で理解しやすいという特徴があります。
計算式は以下の通りです。
d = R * arccos(sin(φ1) * sin(φ2) + cos(φ1) * cos(φ2) * cos(Δλ))
ここでも、φ1, φ2は2点の緯度、Δλは経度の差、Rは地球の半径をラジアンに変換して使用します。ただし、2点間の距離が非常に近い場合、arccosの引数が1に近くなり、浮動小数点演算の丸め誤差によって精度が低下する可能性があるため、ハーバサインの公式の方が推奨されることが多いです。
より高精度なヴィンセンティの公式とは
地球は完全な球体ではなく、赤道方向にわずかに膨らんだ回転楕円体です。この地球の形状をより正確に考慮して距離を計算するのが、ヴィンセンティの公式(Vincenty’s formulae)です。 ヴィンセンティの公式は、測地線距離(楕円体表面上の最短距離)を反復計算によって求めるため、ハーバサインの公式や球面三角法の余弦定理よりも高い精度が期待できます。
この公式は非常に複雑で、手計算での実装は困難ですが、測量や高精度な位置情報サービスなど、極めて正確な距離が必要な場面で利用されます。 近年では、ヴィンセンティの公式よりもさらに高精度で計算速度も速いKarneyの計算方法も登場しています。
緯度経度距離計算式を実践!具体的な計算方法

理論を理解したところで、実際に緯度経度から距離を計算する方法を見ていきましょう。プログラミング言語を使った自動計算や、身近なツールであるExcelでの計算方法をご紹介します。
プログラミング言語(Python, JavaScript)での実装例
プログラミング言語を使えば、緯度経度からの距離計算を効率的に行えます。ここでは、PythonとJavaScriptでの実装例をご紹介します。
Pythonでの実装例
Pythonでは、mathモジュールを使ってハーバサインの公式を実装できます。また、geopyのような外部ライブラリを利用すると、より簡単に高精度な距離計算が可能です。
import math
def haversine_distance(lat1, lon1, lat2, lon2):
R = 6371 # 地球の平均半径(km)
lat1_rad = math.radians(lat1)
lon1_rad = math.radians(lon1)
lat2_rad = math.radians(lat2)
lon2_rad = math.radians(lon2)
dlat = lat2_rad - lat1_rad
dlon = lon2_rad - lon1_rad
a = math.sin(dlat / 2)**2 + math.cos(lat1_rad) * math.cos(lat2_rad) * math.sin(dlon / 2)**2
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
distance = R * c
return distance
# 例:東京駅と大阪駅の距離を計算
tokyo_lat, tokyo_lon = 35.681236, 139.767125 # 東京駅
osaka_lat, osaka_lon = 34.693737, 135.502165 # 大阪駅
distance = haversine_distance(tokyo_lat, tokyo_lon, osaka_lat, osaka_lon)
print(f"東京駅と大阪駅の距離: {distance:.2f} km")
このコードは、ハーバサインの公式を用いて2点間の距離を計算するものです。緯度と経度をラジアンに変換し、地球の平均半径を掛けることで距離を算出します。
JavaScriptでの実装例
JavaScriptでも同様に、ハーバサインの公式を実装できます。ウェブアプリケーションなどで地図上の距離を表示する際に役立ちます。
function haversineDistance(lat1, lon1, lat2, lon2) {
const R = 6371; // 地球の平均半径(km)
const lat1_rad = (lat1 * Math.PI) / 180;
const lon1_rad = (lon1 * Math.PI) / 180;
const lat2_rad = (lat2 * Math.PI) / 180;
const lon2_rad = (lon2 * Math.PI) / 180;
const dlat = lat2_rad - lat1_rad;
const dlon = lon2_rad - lon1_rad;
const a = Math.sin(dlat / 2) * Math.sin(dlat / 2) +
Math.cos(lat1_rad) * Math.cos(lat2_rad) *
Math.sin(dlon / 2) * Math.sin(dlon / 2);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
const distance = R * c;
return distance;
}
// 例:東京駅と大阪駅の距離を計算
const tokyo_lat = 35.681236;
const tokyo_lon = 139.767125;
const osaka_lat = 34.693737;
const osaka_lon = 135.502165;
const distance = haversineDistance(tokyo_lat, tokyo_lon, osaka_lat, osaka_lon);
console.log(`東京駅と大阪駅の距離: ${distance.toFixed(2)} km`);
これらのコードは、基本的なハーバサインの公式を直接実装したものです。より高精度な計算が必要な場合は、専門のライブラリやAPIの利用を検討すると良いでしょう。
ExcelやGoogleスプレッドシートでの計算方法
プログラミングの知識がなくても、ExcelやGoogleスプレッドシートを使って緯度経度からの距離を計算できます。ここでは、ハーバサインの公式をExcelの関数で表現する進め方をご紹介します。
以下の表のように、A列に地点名、B列に緯度、C列に経度を入力するとします。
| 地点名 | 緯度 (度) | 経度 (度) |
|---|---|---|
| 地点A | 35.681236 | 139.767125 |
| 地点B | 34.693737 | 135.502165 |
D列に2点間の距離を計算するセルを用意し、以下の数式を入力します。
=ACOS(SIN(RADIANS(B2))*SIN(RADIANS(B3))+COS(RADIANS(B2))*COS(RADIANS(B3))*COS(RADIANS(C3-C2)))*6371
この数式は、球面三角法の余弦定理に基づいています。 各関数の意味は以下の通りです。
RADIANS(): 度をラジアンに変換します。三角関数はラジアンを引数とするため、この変換が必要です。SIN(),COS(): それぞれ正弦、余弦を計算します。ACOS(): 逆余弦を計算します。6371: 地球の平均半径(km)です。
この数式をD2セルに入力すれば、地点Aと地点Bの間の距離がキロメートル単位で表示されます。ExcelやGoogleスプレッドシートは、手軽に距離計算を行いたい場合に非常に便利なツールです。
距離計算の精度を高めるコツと注意点

緯度経度からの距離計算は、単に公式に当てはめるだけでなく、いくつかのコツや注意点を押さえることで、より正確な結果を得られます。特に、地球の形状や測地系の理解は欠かせません。
地球の形状(測地系)が計算に与える影響
地球は完全な球体ではなく、赤道部分がわずかに膨らんだ回転楕円体です。この地球の形状を数学的にモデル化したものを「準拠楕円体」と呼び、この準拠楕円体と座標系の基準を定めたものが「測地系」です。
現在、世界的に広く使われている測地系は「世界測地系(WGS84)」です。GPSで得られる座標値も、このWGS84に基づいています。 日本国内では、以前は「日本測地系」が使われていましたが、2002年に世界測地系に移行しました。 異なる測地系で取得された緯度経度を使って距離計算を行うと、誤差が生じる可能性があります。
そのため、計算に使う緯度経度がどの測地系に基づいているかを確認し、必要であれば変換することが正確な距離を求めるための重要なコツです。
どの計算式を選ぶべきか?用途に応じた選択
緯度経度からの距離計算には、ハーバサインの公式、球面三角法の余弦定理、ヴィンセンティの公式など、複数の方法があることをご紹介しました。どの計算式を選ぶべきかは、その用途と求められる精度によって異なります。
- 一般的な用途(地図アプリ、おおよその距離): ハーバサインの公式や球面三角法の余弦定理が適しています。実装が比較的容易で、実用上十分な精度が得られます。
- 高精度な測量、航空・船舶のナビゲーション: 地球の楕円体形状を考慮するヴィンセンティの公式や、さらに高精度な測地線計算アルゴリズムが推奨されます。 これらの計算は複雑ですが、ミリメートル単位の精度が求められる場面で真価を発揮します。
このように、計算の目的や必要な精度に応じて最適な公式を選択することが、効率的かつ正確な距離計算を行うための大切な決定となります。
よくある質問

- 緯度経度距離計算式はどのような場面で使われますか?
- ハーバサインの公式とヴィンセンティの公式の主な違いは何ですか?
- 緯度経度の単位は何ですか?
- 距離計算の誤差を減らすにはどうすれば良いですか?
- 日本国内の距離計算で特に注意すべき点はありますか?
緯度経度距離計算式はどのような場面で使われますか?
緯度経度距離計算式は、私たちの身の回りの様々な場面で活用されています。例えば、カーナビやスマートフォンの地図アプリでのルート案内、物流システムでの最適な配送経路の算出、航空機や船舶の航行管理、さらには災害時の避難経路の特定など、位置情報が関わる多くの分野で不可欠な技術です。 また、地理情報システム(GIS)やデータ分析の分野でも、2点間の地理的関係を把握するために頻繁に利用されています。
ハーバサインの公式とヴィンセンティの公式の主な違いは何ですか?
ハーバサインの公式とヴィンセンティの公式の主な違いは、地球の形状の扱いにあります。ハーバサインの公式は地球を完全な球体と仮定して距離を計算するため、比較的シンプルで計算負荷も低いのが特徴です。 一方、ヴィンセンティの公式は地球が赤道方向に膨らんだ回転楕円体であることを考慮し、より複雑な計算によって高精度な距離を求めます。
そのため、数メートル程度の誤差が許容される場合はハーバサインの公式、より高い精度(ミリメートル単位)が求められる場合はヴィンセンティの公式が適しています。
緯度経度の単位は何ですか?
緯度と経度の単位は、一般的に「度(°)」で表されます。さらに細かく表現する場合、度を60等分した「分(′)」、分を60等分した「秒(″)」を用いる「度分秒(DMS)」形式と、度を小数点以下で表現する「10進法度(DD)」形式があります。 距離計算を行う際は、計算式の多くがラジアンを引数とするため、度分秒形式や10進法度形式の値をラジアンに変換する必要があります。
距離計算の誤差を減らすにはどうすれば良いですか?
距離計算の誤差を減らすには、いくつかのコツがあります。まず、使用する緯度経度データがどの測地系に基づいているかを確認し、可能であれば世界測地系(WGS84)に統一することが大切です。 次に、計算の目的に応じて適切な計算式を選ぶことです。高精度な距離が必要な場合は、ヴィンセンティの公式のような楕円体モデルを考慮した計算式を利用しましょう。
また、地球の半径を固定値として使う場合、平均半径だけでなく、計算対象となる地域の緯度に応じた半径を用いることで、より精度を高められることもあります。
日本国内の距離計算で特に注意すべき点はありますか?
日本国内での距離計算では、特に測地系に注意が必要です。日本では2002年まで「日本測地系(Tokyo Datum)」が使用されていましたが、現在は「世界測地系(JGD2011、WGS84とほぼ同等)」に移行しています。 古い地図やデータを使用する際は、日本測地系で表記されている可能性があるため、世界測地系への変換が必要になる場合があります。
国土地理院の測量計算サイトでは、測地系の変換や高精度な距離計算ツールが提供されており、日本国内の測量計算に役立ちます。
まとめ
- 緯度と経度は地球上の位置を示す重要な情報です。
- 地球は完全な球体ではないため、距離計算には専用の公式が必要です。
- ハーバサインの公式は、地球を球体と仮定し、実用的な精度で距離を計算します。
- 球面三角法の余弦定理も球体モデルで距離を求めますが、近い距離では誤差が出やすい場合があります。
- ヴィンセンティの公式は、地球を回転楕円体と仮定し、高精度な距離計算が可能です。
- PythonやJavaScriptなどのプログラミング言語でハーバサインの公式を実装できます。
- ExcelやGoogleスプレッドシートでも、関数を使って距離計算が可能です。
- 距離計算の精度を高めるには、測地系の理解と適切な計算式の選択が重要です。
- 世界測地系(WGS84)はGPSなどで広く利用されている測地系です。
- 日本国内では、世界測地系への移行を考慮する必要があります。
- 計算の目的や必要な精度に応じて最適な公式を選ぶことが大切です。
- 高精度な計算には、専門のライブラリや国土地理院のツールが役立ちます。
- 緯度経度距離計算は、地図アプリや物流、測量など多岐にわたる分野で活用されています。
- 緯度と経度の単位は度で、計算時にはラジアンへの変換が必要です。
- 誤差を減らすには、測地系の統一や適切な地球半径の使用がコツです。
