Comment calculer une distance à vol d'oiseau : la méthode, pas à pas
En bref. Une distance à vol d'oiseau est la longueur du plus court chemin à la surface de la Terre entre deux points, le long d'un grand cercle. On la calcule à partir des latitudes et longitudes avec la formule de haversine, sur une sphère de rayon 6 371 km : pour Lyon (45,7676° N, 4,8350° E) et Marseille (43,2965° N, 5,3698° E), le résultat est 278,0 km. Le calcul tient en cinq lignes de tableur et se vérifie en une minute.
Ce qu’on calcule vraiment
« À vol d’oiseau » signifie en ligne droite, sans tenir compte des routes, des reliefs ni des obstacles. Sur une sphère, la ligne droite entre deux points est un arc de grand cercle — un cercle dont le centre est le centre de la Terre, comme l’équateur ou les méridiens. Sa longueur s’appelle la distance orthodromique. C’est celle qu’affiche ce site, celle que suivent les avions sur les longs trajets et celle qu’entendent les règlements qui parlent de « rayon de X kilomètres ».
Il faut trois ingrédients : les coordonnées des deux points (latitude φ et longitude λ, en degrés décimaux), un modèle de la Terre (une sphère de rayon R = 6 371,0088 km suffit à 0,3 % près) et une formule.
La formule de haversine
Pour deux points (φ₁, λ₁) et (φ₂, λ₂), en radians :
a = sin²(Δφ / 2) + cos φ₁ · cos φ₂ · sin²(Δλ / 2)
d = 2 · R · arcsin(√a)
avec Δφ = φ₂ − φ₁ et Δλ = λ₂ − λ₁. Le nom vient du « demi-sinus verse », hav(θ) = sin²(θ/2), une fonction que les navigateurs tabulaient au XIXᵉ siècle pour faire ce calcul sans machine. La formule est préférée à la loi des cosinus sphérique (d = R · arccos(sin φ₁ sin φ₂ + cos φ₁ cos φ₂ cos Δλ)) parce qu’elle reste précise pour les courtes distances, où l’arccos d’un nombre très proche de 1 perd des décimales.
Exemple complet : Lyon – Marseille
Coordonnées des mairies (Admin Express, IGN) :
| Latitude | Longitude | |
|---|---|---|
| Lyon | 45,7676° N | 4,8350° E |
| Marseille | 43,2965° N | 5,3698° E |
- Conversion en radians (× π / 180) : φ₁ = 0,798 80, λ₁ = 0,084 39, φ₂ = 0,755 67, λ₂ = 0,093 72.
- Différences : Δφ = −0,043 13, Δλ = 0,009 33.
- a = sin²(−0,021 57) + cos(0,798 80) · cos(0,755 67) · sin²(0,004 67) = 0,000 465 + 0,697 6 × 0,727 8 × 0,000 021 8 = 0,000 476.
- d = 2 × 6 371,0088 × arcsin(√0,000 476) = 2 × 6 371,0088 × 0,021 82 = 278,0 km.
C’est la valeur affichée sur la page distance entre Lyon et Marseille. Un calcul sur l’ellipsoïde WGS 84 (formules de Vincenty ou de Karney) donne 277,9 km : l’écart est négligeable devant l’incertitude sur ce qu’on appelle « le centre » d’une ville.
Dans un tableur
Avec les latitudes en A1 et A2 et les longitudes en B1 et B2 (degrés décimaux), la formule tient en une cellule :
=2*6371.0088*ASIN(RACINE(SIN(RADIANS(A2-A1)/2)^2 + COS(RADIANS(A1))*COS(RADIANS(A2))*SIN(RADIANS(B2-B1)/2)^2))
(SQRT à la place de RACINE dans Excel en anglais.) Elle fonctionne dans Excel, LibreOffice et Google Sheets.
En Python
from math import radians, sin, cos, asin, sqrt
def vol_oiseau(lat1, lon1, lat2, lon2, R=6371.0088):
p1, p2 = radians(lat1), radians(lat2)
dp, dl = radians(lat2 - lat1), radians(lon2 - lon1)
a = sin(dp / 2) ** 2 + cos(p1) * cos(p2) * sin(dl / 2) ** 2
return 2 * R * asin(sqrt(a))
print(vol_oiseau(45.7676, 4.8350, 43.2965, 5.3698)) # 278.0
C’est, à la lettre près, le code qui produit toutes les distances de ce site.
Les erreurs les plus fréquentes
Appliquer Pythagore aux degrés. Un degré de latitude vaut toujours 111,2 km, mais un degré de longitude ne vaut 111,2 km qu’à l’équateur : à la latitude de Paris, il n’en vaut que 73. Calculer √(Δlat² + Δlon²) × 111 donne pour Lyon–Marseille 281 km — pas si faux ici, mais pour Brest–Strasbourg, trajet est-ouest, elle donne 1 361 km au lieu de 901 : 50 % de trop. Si l’on tient vraiment à Pythagore pour de courtes distances, il faut multiplier Δλ par cos(latitude moyenne).
Inverser latitude et longitude. L’ancienne version de ce site affichait les deux colonnes dans le mauvais ordre pendant des années. La convention est latitude d’abord (nord-sud, de −90° à +90°), longitude ensuite (est-ouest, de −180° à +180°) ; en France, la latitude est toujours entre 41 et 51 et la longitude entre −5 et 10. Attention : GeoJSON et beaucoup de bibliothèques de cartographie utilisent l’ordre inverse, longitude puis latitude.
Oublier de convertir en radians. Les fonctions trigonométriques des tableurs et des langages de programmation attendent des radians. Un résultat absurde (des milliers de kilomètres pour deux villages voisins) vient presque toujours de là.
Prendre le mauvais rayon. 6 378 km (rayon équatorial), 6 357 km (polaire), 6 367 km (à la latitude de la France), 6 371 km (moyen) : tous se rencontrent. L’écart entre eux est de 0,3 % au plus, ce qui reste acceptable, mais pour comparer des résultats entre sources, il faut connaître le rayon utilisé. Nous utilisons 6 371,0088 km, le rayon moyen défini par l’Union géodésique et géophysique internationale.
Confondre distance à vol d’oiseau et distance par la route. La première est une propriété géométrique ; la seconde dépend du réseau et du mode de transport, et elle est toujours plus longue.
Vérifier un résultat
Trois réflexes : la distance doit être inférieure à 1 400 km entre deux points de métropole (le record est Ouessant–Bonifacio, 1 366,6 km) ; un degré de latitude fait 111 km, donc deux villes séparées de 2,5° de latitude sont à au moins 278 km ; et la fiche de chaque commune donne les coordonnées exactes de sa mairie pour refaire le calcul.