Section courante

A propos

Section administrative du site

Le calcul de la distance géographique entre deux points situés à la surface de la Terre est l'une des opérations les plus courantes en géographie, en navigation, en aviation et dans les systèmes modernes de localisation. Chaque jour, des millions d'applications utilisent ce type de calcul pour déterminer des itinéraires, estimer des temps de déplacement ou localiser des positions avec précision. Qu'il s'agisse d'un système GPS, d'un logiciel de cartographie ou d'un programme de navigation maritime ou aérienne, tous reposent sur des principes mathématiques similaires permettant de mesurer la distance séparant deux coordonnées géographiques. Contrairement au calcul de la distance entre deux points sur un plan, la Terre possède une forme approximativement sphérique, ce qui oblige à tenir compte de sa courbure. Heureusement, il n'est pas nécessaire d'être un spécialiste en trigonométrie sphérique pour mettre en oeuvre ce type de calcul dans un programme informatique. À partir des coordonnées de latitude et de longitude de deux emplacements, il est possible de déterminer avec une excellente précision la distance qui les sépare, que celle-ci soit exprimée en kilomètres (Km), en miles terrestres ou en miles nautiques. Le principe consiste à convertir les coordonnées géographiques en angles mesurés en radians, puis à appliquer une formule trigonométrique permettant de calculer l'angle central entre les deux points à la surface du globe. Une fois cet angle obtenu, il suffit de le multiplier par le rayon approprié de la Terre afin d'obtenir la distance recherchée dans l'unité désirée.

Dans l'exemple présenté ci-dessous, les coordonnées de Montréal et de Paris sont utilisées afin de démontrer le fonctionnement de cette méthode. Le programme QuickBASIC/QBasic met en oeuvre plusieurs fonctions spécialisées permettant de calculer la distance entre deux positions géographiques dans différentes unités de mesure. Une fonction d'arc cosinus est tout d'abord utilisée afin de compléter les capacités trigonométriques du langage, puis plusieurs routines effectuent la conversion des coordonnées et le calcul de la distance sur la sphère terrestre. Cette approche offre l'avantage d'être relativement simple à comprendre tout en fournissant des résultats très précis. Les exemples fournis montrent la distance séparant Montréal et Paris en kilomètres, en miles terrestres ainsi qu'en miles nautiques, démontrant la flexibilité de l'algorithme. Ce type de calcul est particulièrement utile dans les logiciels de géolocalisation, les applications de transport, les systèmes d'information géographique, les programmes de navigation maritime et aérienne ainsi que dans de nombreux projets scientifiques. Il constitue également un excellent exemple de l'application concrète de la trigonométrie à un problème réel de géographie et de cartographie moderne.

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 QuickBASIC/QBasic suivant, vous trouvez la réponse que vous souhaitez :

  1. DECLARE FUNCTION ACos! (a!)
  2. DECLARE FUNCTION CoordToDeltaKm! (Q1Latitude!, Q1LatiDeg!, Q1LatiDirection$, Q1Longitude!, Q1LongDeg!, Q1LongDirection$, Q2Latitude!, Q2LatiDeg!, Q2LatiDirection$, Q2Longitude!, Q2LongDeg!, Q2LongDirection$)
  3. DECLARE FUNCTION CoordToDeltaNauticalMiles! (Q1Latitude!, Q1LatiDeg!, Q1LatiDirection$, Q1Longitude!, Q1LongDeg!, Q1LongDirection$, Q2Latitude!, Q2LatiDeg!, Q2LatiDirection$, Q2Longitude!, Q2LongDeg!, Q2LongDirection$)
  4. DECLARE FUNCTION CoordToDeltaStatuteMiles! (Q1Latitude!, Q1LatiDeg!, Q1LatiDirection$, Q1Longitude!, Q1LongDeg!, Q1LongDirection$, Q2Latitude!, Q2LatiDeg!, Q2LatiDirection$, Q2Longitude!, Q2LongDeg!, Q2LongDirection$)
  5.  
  6. CONST PI = 3.141592653589793#
  7.  
  8. PRINT "Distance entre Montréal et Paris en Km: " + STR$(CoordToDeltaKm!(45, 31, "N", 73, 34, "O", 48, 50, "N", 2, 20, "E"))
  9. PRINT "Distance entre Montréal et Paris en Miles: " + STR$(CoordToDeltaStatuteMiles(45, 31, "N", 73, 34, "O", 48, 50, "N", 2, 20, "E"))
  10. PRINT "Distance entre Montréal et Paris en Miles Nautique: " + STR$(CoordToDeltaNauticalMiles(45, 31, "N", 73, 34, "O", 48, 50, "N", 2, 20, "E"))
  11.  
  12. FUNCTION ACos (a)
  13.    IF ABS(a) = 1 THEN
  14.       ACos = (1 - a) * PI / 2
  15.    ELSE
  16.       ACos = ATN(-a / SQR(1 - a * a)) + 2 * ATN(1)
  17.    END IF
  18. END FUNCTION
  19.  
  20. FUNCTION CoordToDeltaKm! (Q1Latitude, Q1LatiDeg, Q1LatiDirection$, Q1Longitude, Q1LongDeg, Q1LongDirection$, Q2Latitude, Q2LatiDeg, Q2LatiDirection$, Q2Longitude, Q2LongDeg, Q2LongDirection$)
  21.  a1 = (Q1Latitude + (Q1LatiDeg / 60)) * PI / 180
  22.  IF Q1LatiDirection$ = "N" THEN
  23.      a1 = -a1
  24.  END IF
  25.  b1 = (Q1Longitude + (Q1LongDeg / 60)) * PI / 180
  26.  IF Q1LongDirection$ = "O" THEN
  27.      b1 = -b1
  28.  END IF
  29.  a2 = (Q2Latitude + (Q2LatiDeg / 60)) * PI / 180
  30.  IF Q2LatiDirection$ = "N" THEN
  31.      a2 = -a2
  32.  END IF
  33.  b2 = (Q2Longitude + (Q2LongDeg / 60)) * PI / 180
  34.  IF Q2LongDirection$ = "O" THEN
  35.      b2 = -b2
  36.  END IF
  37.  RawDelta = ACos(COS(a1) * COS(b1) * COS(a2) * COS(b2) + COS(a1) * SIN(b1) * COS(a2) * SIN(b2) + SIN(a1) * SIN(a2))
  38.  CoordToDeltaKm = RawDelta * 6378!
  39. END FUNCTION
  40.  
  41. FUNCTION CoordToDeltaNauticalMiles (Q1Latitude, Q1LatiDeg, Q1LatiDirection$, Q1Longitude, Q1LongDeg, Q1LongDirection$, Q2Latitude, Q2LatiDeg, Q2LatiDirection$, Q2Longitude, Q2LongDeg, Q2LongDirection$)
  42.  a1 = (Q1Latitude + (Q1LatiDeg / 60)) * PI / 180
  43.  IF Q1LatiDirection$ = "N" THEN
  44.      a1 = -a1
  45.  END IF
  46.  b1 = (Q1Longitude + (Q1LongDeg / 60)) * PI / 180
  47.  IF Q1LongDirection$ = "O" THEN
  48.      b1 = -b1
  49.  END IF
  50.  a2 = (Q2Latitude + (Q2LatiDeg / 60)) * PI / 180
  51.  IF Q2LatiDirection$ = "N" THEN
  52.      a2 = -a2
  53.  END IF
  54.  b2 = (Q2Longitude + (Q2LongDeg / 60)) * PI / 180
  55.  IF Q2LongDirection$ = "O" THEN
  56.      b2 = -b2
  57.  END IF
  58.  RawDelta = ACos(COS(a1) * COS(b1) * COS(a2) * COS(b2) + COS(a1) * SIN(b1) * COS(a2) * SIN(b2) + SIN(a1) * SIN(a2))
  59.  CoordToDeltaNauticalMiles = RawDelta * 3443.9
  60. END FUNCTION
  61.  
  62. FUNCTION CoordToDeltaStatuteMiles (Q1Latitude, Q1LatiDeg, Q1LatiDirection$, Q1Longitude, Q1LongDeg, Q1LongDirection$, Q2Latitude, Q2LatiDeg, Q2LatiDirection$, Q2Longitude, Q2LongDeg, Q2LongDirection$)
  63.  a1 = (Q1Latitude + (Q1LatiDeg / 60)) * PI / 180
  64.  IF Q1LatiDirection$ = "N" THEN
  65.      a1 = -a1
  66.  END IF
  67.  b1 = (Q1Longitude + (Q1LongDeg / 60)) * PI / 180
  68.  IF Q1LongDirection$ = "O" THEN
  69.      b1 = -b1
  70.  END IF
  71.  a2 = (Q2Latitude + (Q2LatiDeg / 60)) * PI / 180
  72.  IF Q2LatiDirection$ = "N" THEN
  73.      a2 = -a2
  74.  END IF
  75.  b2 = (Q2Longitude + (Q2LongDeg / 60)) * PI / 180
  76.  IF Q2LongDirection$ = "O" THEN
  77.      b2 = -b2
  78.  END IF
  79.  RawDelta = ACos(COS(a1) * COS(b1) * COS(a2) * COS(b2) + COS(a1) * SIN(b1) * COS(a2) * SIN(b2) + SIN(a1) * SIN(a2))
  80.  CoordToDeltaStatuteMiles = RawDelta * 3963.1
  81. END FUNCTION

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 : Mercredi, le 14 septembre 2016