Section courante

A propos

Section administrative du site

Une des fonctions les plus communes de la géographie et des systèmes modernes, c'est le calcul de la distance géographique entre deux coordonnées de Longitude et de Latitude. Il n'y a aucune nécessité de grande connaissance en trigonométrie pour arriver à se genre de calcul dans le format qu'on le souhaite, Km, Miles ou Miles Nautiques. Ainsi, si vous savez les coordonnées suivantes :

Ville Latitude Longitude
Montréal 45 31N 73 34O
Paris 48 50N 2 20E

A l'aide du code source Python suivant, vous trouverez la réponse que vous souhaitez :

Jusqu'à la version de Python 2
  1. from math import cos, sin, acos, pi
  2.  
  3. def CoordToDeltaKm (
  4.     Q1Latitude,Q1LatiDeg,Q1LatiDirection,Q1Longitude,Q1LongDeg,Q1LongDirection,
  5.     Q2Latitude,Q2LatiDeg,Q2LatiDirection,Q2Longitude,Q2LongDeg,Q2LongDirection
  6.     ):
  7.     "Calcul la distance entre deux coordonnees Latitude et Longitude en Km"
  8.     a1=(Q1Latitude+(Q1LatiDeg/60.0))*pi/180
  9.     if Q1LatiDirection=="N":
  10.        a1=-a1
  11.     b1=(Q1Longitude+(Q1LongDeg/60.0))*pi/180
  12.     if Q1LongDirection=="O":
  13.        b1=-b1
  14.     a2=(Q2Latitude+(Q2LatiDeg/60.0))*pi/180
  15.     if Q2LatiDirection=="N":
  16.        a2=-a2
  17.     b2=(Q2Longitude+(Q2LongDeg/60.0))*pi/180
  18.     if Q2LongDirection=="O":
  19.        b2=-b2
  20.     RawDelta = acos(cos(a1)*cos(b1)*cos(a2)*cos(b2) + cos(a1)*sin(b1)*cos(a2)*sin(b2) + sin(a1)*sin(a2))
  21.     return RawDelta * 6378.0
  22.  
  23. def CoordToDeltaStatuteMiles(
  24.     Q1Latitude,Q1LatiDeg,Q1LatiDirection,Q1Longitude,Q1LongDeg,Q1LongDirection,
  25.     Q2Latitude,Q2LatiDeg,Q2LatiDirection,Q2Longitude,Q2LongDeg,Q2LongDirection
  26.     ):
  27.     "Calcul la distance entre deux coordonnees Latitude et Longitude en Miles"
  28.     a1=(Q1Latitude+(Q1LatiDeg/60.0))*pi/180
  29.     if Q1LatiDirection=='N':
  30.         a1=-a1
  31.     b1=(Q1Longitude+(Q1LongDeg/60.0))*pi/180
  32.     if Q1LongDirection=='O':
  33.         b1=-b1
  34.     a2=(Q2Latitude+(Q2LatiDeg/60.0))*pi/180
  35.     if Q2LatiDirection=='N':
  36.         a2=-a2
  37.     b2=(Q2Longitude+(Q2LongDeg/60.0))*pi/180
  38.     if Q2LongDirection=='O':
  39.         b2=-b2
  40.     RawDelta = acos(cos(a1)*cos(b1)*cos(a2)*cos(b2) + cos(a1)*sin(b1)*cos(a2)*sin(b2) + sin(a1)*sin(a2))
  41.     return RawDelta * 3963.1
  42.  
  43. def CoordToDeltaNauticalMiles(
  44.     Q1Latitude,Q1LatiDeg,Q1LatiDirection,Q1Longitude,Q1LongDeg,Q1LongDirection,
  45.     Q2Latitude,Q2LatiDeg,Q2LatiDirection,Q2Longitude,Q2LongDeg,Q2LongDirection
  46.     ):
  47.     "Calcul la distance entre deux coordonnees Latitude et Longitude en Miles nautique"
  48.     a1=(Q1Latitude+(Q1LatiDeg/60.0))*pi/180
  49.     if Q1LatiDirection=='N':
  50.         a1=-a1
  51.     b1=(Q1Longitude+(Q1LongDeg/60.0))*pi/180
  52.     if Q1LongDirection=='O':
  53.         b1=-b1
  54.     a2=(Q2Latitude+(Q2LatiDeg/60.0))*pi/180
  55.     if Q2LatiDirection=='N':
  56.         a2=-a2
  57.     b2=(Q2Longitude+(Q2LongDeg/60.0))*pi/180
  58.     if Q2LongDirection=='O':
  59.         b2=-b2
  60.     RawDelta = acos(cos(a1)*cos(b1)*cos(a2)*cos(b2) + cos(a1)*sin(b1)*cos(a2)*sin(b2) + sin(a1)*sin(a2))
  61.     return RawDelta * 3443.9
  62.  
  63. print "Distance entre Montreal et Paris en Km: "+str(CoordToDeltaKm(45, 31,'N', 73, 34,'O',    48, 50,'N', 2,  20,'E'))
  64. print "Distance entre Montreal et Paris en Miles: "+str(CoordToDeltaStatuteMiles(45, 31,'N', 73, 34,'O',    48, 50,'N', 2,  20,'E'))
  65. print "Distance entre Montreal et Paris en Miles Nautique: "+str(CoordToDeltaNauticalMiles(45, 31,'N', 73, 34,'O',    48, 50,'N', 2,  20,'E'))

on obtiendra le résultat suivant :

Distance entre Montréal et Paris en Km: 5510.16761889
Distance entre Montréal et Paris en Miles: 3423.85470217
Distance entre Montréal et Paris en Miles Nautique: 2975.30044884


Dernière mise à jour : Dimanche, le 26 février 2012