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

  1. Const PI=3.141592653589793 
  2.  
  3. Function ACos(a) 
  4.    If Abs(a)=1 Then  
  5.       ACos = (1-a)*PI/2 
  6.    Else  
  7.       ACos = Atn(-a/Sqr(1-a*a))+2*Atn(1) 
  8.    End If 
  9. End Function
  10.  
  11. Function CoordToDeltaKm(Q1Latitude,Q1LatiDeg,Q1LatiDirection,Q1Longitude,Q1LongDeg,Q1LongDirection,Q2Latitude,Q2LatiDeg,Q2LatiDirection,Q2Longitude,Q2LongDeg,Q2LongDirection)
  12.  a1=(Q1Latitude+(Q1LatiDeg/60))*PI/180
  13.  If Q1LatiDirection="N"Then 
  14.       a1=-a1
  15.  End If
  16.  b1=(Q1Longitude+(Q1LongDeg/60))*PI/180
  17.  If Q1LongDirection="O"Then 
  18.       b1=-b1
  19.  End If
  20.  a2=(Q2Latitude+(Q2LatiDeg/60))*PI/180
  21.  If Q2LatiDirection="N"Then 
  22.       a2=-a2
  23.  End If
  24.  b2=(Q2Longitude+(Q2LongDeg/60))*PI/180
  25.  If Q2LongDirection="O"Then 
  26.       b2=-b2
  27.  End If
  28.  RawDelta=ACos(Cos(a1)*Cos(b1)*Cos(a2)*Cos(b2) + Cos(a1)*Sin(b1)*Cos(a2)*Sin(b2) + Sin(a1)*Sin(a2))
  29.  CoordToDeltaKm=RawDelta*6378.0
  30. End Function
  31.  
  32. Function CoordToDeltaStatuteMiles(Q1Latitude,Q1LatiDeg,Q1LatiDirection,Q1Longitude,Q1LongDeg,Q1LongDirection,Q2Latitude,Q2LatiDeg,Q2LatiDirection,Q2Longitude,Q2LongDeg,Q2LongDirection)
  33.  a1=(Q1Latitude+(Q1LatiDeg/60))*PI/180
  34.  If Q1LatiDirection="N"Then 
  35.       a1=-a1
  36.  End If
  37.  b1=(Q1Longitude+(Q1LongDeg/60))*PI/180
  38.  If Q1LongDirection="O"Then 
  39.       b1=-b1
  40.  End If
  41.  a2=(Q2Latitude+(Q2LatiDeg/60))*PI/180
  42.  If Q2LatiDirection="N"Then 
  43.       a2=-a2
  44.  End If
  45.  b2=(Q2Longitude+(Q2LongDeg/60))*PI/180
  46.  If Q2LongDirection="O"Then 
  47.       b2=-b2
  48.  End If
  49.  RawDelta=ACos(Cos(a1)*Cos(b1)*Cos(a2)*Cos(b2) + Cos(a1)*Sin(b1)*Cos(a2)*Sin(b2) + Sin(a1)*Sin(a2))
  50.  CoordToDeltaStatuteMiles=RawDelta*3963.1
  51. End Function
  52.  
  53.  
  54. Function CoordToDeltaNauticalMiles(Q1Latitude,Q1LatiDeg,Q1LatiDirection,Q1Longitude,Q1LongDeg,Q1LongDirection,Q2Latitude,Q2LatiDeg,Q2LatiDirection,Q2Longitude,Q2LongDeg,Q2LongDirection)
  55.  a1=(Q1Latitude+(Q1LatiDeg/60))*PI/180
  56.  If Q1LatiDirection="N"Then 
  57.       a1=-a1
  58.  End If
  59.  b1=(Q1Longitude+(Q1LongDeg/60))*PI/180
  60.  If Q1LongDirection="O"Then 
  61.       b1=-b1
  62.  End If
  63.  a2=(Q2Latitude+(Q2LatiDeg/60))*PI/180
  64.  If Q2LatiDirection="N"Then 
  65.       a2=-a2
  66.  End If
  67.  b2=(Q2Longitude+(Q2LongDeg/60))*PI/180
  68.  If Q2LongDirection="O"Then 
  69.       b2=-b2
  70.  End If
  71.  RawDelta=ACos(Cos(a1)*Cos(b1)*Cos(a2)*Cos(b2) + Cos(a1)*Sin(b1)*Cos(a2)*Sin(b2) + Sin(a1)*Sin(a2))
  72.  CoordToDeltaNauticalMiles=RawDelta * 3443.9
  73. End Function
  74.  
  75. Sub Main()
  76.  MsgBox "Distance entre Montréal et Paris en Km: " & CStr(CoordToDeltaKm(45, 31,"N",73, 34,"O",48, 50,"N", 2,  20,"E")) & vbCrLf & _
  77.         "Distance entre Montréal et Paris en Miles: " & CStr(CoordToDeltaStatuteMiles(45, 31,"N", 73, 34,"O",    48, 50,"N", 2,  20,"E")) & vbCrLf & _
  78.         "Distance entre Montréal et Paris en Miles Nautique: " & CStr(CoordToDeltaNauticalMiles(45, 31,"N", 73, 34,"O",    48, 50,"N", 2,  20,"E"))
  79. End Sub

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 : Lundi, le 19 novembre 2012