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

Essayer maintenant !
  1. def CoordToDeltaKm ( 
  2.     q1Latitude,q1LatiDeg,q1LatiDirection,q1Longitude,q1LongDeg,q1LongDirection, 
  3.     q2Latitude,q2LatiDeg,q2LatiDirection,q2Longitude,q2LongDeg,q2LongDirection 
  4.     ) 
  5.     pi=3.141592653589793  
  6.     a1=(q1Latitude+(q1LatiDeg/60.0))*pi/180 
  7.     if q1LatiDirection=="N" 
  8.        a1=-a1 
  9.     end 
  10.     b1=(q1Longitude+(q1LongDeg/60.0))*pi/180 
  11.     if q1LongDirection=="O" 
  12.        b1=-b1 
  13.     end 
  14.     a2=(q2Latitude+(q2LatiDeg/60.0))*pi/180 
  15.     if q2LatiDirection=="N" 
  16.        a2=-a2 
  17.     end 
  18.     b2=(q2Longitude+(q2LongDeg/60.0))*pi/180 
  19.     if q2LongDirection=="O" 
  20.        b2=-b2 
  21.     end 
  22.     rawDelta = Math.acos(Math.cos(a1)*Math.cos(b1)*Math.cos(a2)*Math.cos(b2) + Math.cos(a1)*Math.sin(b1)*Math.cos(a2)*Math.sin(b2) + Math.sin(a1)*Math.sin(a2)) 
  23.     return rawDelta * 6378.0 
  24. end 
  25.  
  26. def CoordToDeltaStatuteMiles( 
  27.     q1Latitude,q1LatiDeg,q1LatiDirection,q1Longitude,q1LongDeg,q1LongDirection, 
  28.     q2Latitude,q2LatiDeg,q2LatiDirection,q2Longitude,q2LongDeg,q2LongDirection 
  29.     ) 
  30.     pi=3.141592653589793  
  31.     a1=(q1Latitude+(q1LatiDeg/60.0))*pi/180 
  32.     if q1LatiDirection=="N" 
  33.        a1=-a1 
  34.     end 
  35.     b1=(q1Longitude+(q1LongDeg/60.0))*pi/180 
  36.     if q1LongDirection=="O" 
  37.        b1=-b1 
  38.     end 
  39.     a2=(q2Latitude+(q2LatiDeg/60.0))*pi/180 
  40.     if q2LatiDirection=="N" 
  41.        a2=-a2 
  42.     end 
  43.     b2=(q2Longitude+(q2LongDeg/60.0))*pi/180 
  44.     if q2LongDirection=="O" 
  45.        b2=-b2 
  46.     end 
  47.     rawDelta = Math.acos(Math.cos(a1)*Math.cos(b1)*Math.cos(a2)*Math.cos(b2) + Math.cos(a1)*Math.sin(b1)*Math.cos(a2)*Math.sin(b2) + Math.sin(a1)*Math.sin(a2)) 
  48.     return rawDelta * 3963.1 
  49. end 
  50.  
  51. def CoordToDeltaNauticalMiles( 
  52.     q1Latitude,q1LatiDeg,q1LatiDirection,q1Longitude,q1LongDeg,q1LongDirection, 
  53.     q2Latitude,q2LatiDeg,q2LatiDirection,q2Longitude,q2LongDeg,q2LongDirection 
  54.     ) 
  55.     pi=3.141592653589793  
  56.     a1=(q1Latitude+(q1LatiDeg/60.0))*pi/180 
  57.     if q1LatiDirection=="N" 
  58.        a1=-a1 
  59.     end 
  60.     b1=(q1Longitude+(q1LongDeg/60.0))*pi/180 
  61.     if q1LongDirection=="O" 
  62.        b1=-b1 
  63.     end 
  64.     a2=(q2Latitude+(q2LatiDeg/60.0))*pi/180 
  65.     if q2LatiDirection=="N" 
  66.        a2=-a2 
  67.     end 
  68.     b2=(q2Longitude+(q2LongDeg/60.0))*pi/180 
  69.     if q2LongDirection=="O" 
  70.        b2=-b2 
  71.     end 
  72.     rawDelta = Math.acos(Math.cos(a1)*Math.cos(b1)*Math.cos(a2)*Math.cos(b2) + Math.cos(a1)*Math.sin(b1)*Math.cos(a2)*Math.sin(b2) + Math.sin(a1)*Math.sin(a2)) 
  73.     return rawDelta * 3443.9 
  74. end 
  75.  
  76. print "Distance entre Montréal et Paris en Km: "+String(CoordToDeltaKm(45, 31,'N', 73, 34,'O',    48, 50,'N', 2,  20,'E')) 
  77. print "Distance entre Montréal et Paris en Miles: "+String(CoordToDeltaStatuteMiles(45, 31,'N', 73, 34,'O',    48, 50,'N', 2,  20,'E')) 
  78. print "Distance entre Montréal et Paris en Miles Nautique: "+String(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 23 novembre 2014