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 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