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:
- Const PI=3.141592653589793
-
- Function ACos(a)
- If Abs(a)=1 Then
- ACos = (1-a)*PI/2
- Else
- ACos = Atn(-a/Sqr(1-a*a))+2*Atn(1)
- End If
- End Function
-
- Function CoordToDeltaKm(Q1Latitude,Q1LatiDeg,Q1LatiDirection,Q1Longitude,Q1LongDeg,Q1LongDirection,Q2Latitude,Q2LatiDeg,Q2LatiDirection,Q2Longitude,Q2LongDeg,Q2LongDirection)
- a1=(Q1Latitude+(Q1LatiDeg/60))*PI/180
- If Q1LatiDirection="N"Then
- a1=-a1
- End If
- b1=(Q1Longitude+(Q1LongDeg/60))*PI/180
- If Q1LongDirection="O"Then
- b1=-b1
- End If
- a2=(Q2Latitude+(Q2LatiDeg/60))*PI/180
- If Q2LatiDirection="N"Then
- a2=-a2
- End If
- b2=(Q2Longitude+(Q2LongDeg/60))*PI/180
- If Q2LongDirection="O"Then
- b2=-b2
- End If
- RawDelta=ACos(Cos(a1)*Cos(b1)*Cos(a2)*Cos(b2) + Cos(a1)*Sin(b1)*Cos(a2)*Sin(b2) + Sin(a1)*Sin(a2))
- CoordToDeltaKm=RawDelta*6378.0
- End Function
-
- Function CoordToDeltaStatuteMiles(Q1Latitude,Q1LatiDeg,Q1LatiDirection,Q1Longitude,Q1LongDeg,Q1LongDirection,Q2Latitude,Q2LatiDeg,Q2LatiDirection,Q2Longitude,Q2LongDeg,Q2LongDirection)
- a1=(Q1Latitude+(Q1LatiDeg/60))*PI/180
- If Q1LatiDirection="N"Then
- a1=-a1
- End If
- b1=(Q1Longitude+(Q1LongDeg/60))*PI/180
- If Q1LongDirection="O"Then
- b1=-b1
- End If
- a2=(Q2Latitude+(Q2LatiDeg/60))*PI/180
- If Q2LatiDirection="N"Then
- a2=-a2
- End If
- b2=(Q2Longitude+(Q2LongDeg/60))*PI/180
- If Q2LongDirection="O"Then
- b2=-b2
- End If
- RawDelta=ACos(Cos(a1)*Cos(b1)*Cos(a2)*Cos(b2) + Cos(a1)*Sin(b1)*Cos(a2)*Sin(b2) + Sin(a1)*Sin(a2))
- CoordToDeltaStatuteMiles=RawDelta*3963.1
- End Function
-
-
- Function CoordToDeltaNauticalMiles(Q1Latitude,Q1LatiDeg,Q1LatiDirection,Q1Longitude,Q1LongDeg,Q1LongDirection,Q2Latitude,Q2LatiDeg,Q2LatiDirection,Q2Longitude,Q2LongDeg,Q2LongDirection)
- a1=(Q1Latitude+(Q1LatiDeg/60))*PI/180
- If Q1LatiDirection="N"Then
- a1=-a1
- End If
- b1=(Q1Longitude+(Q1LongDeg/60))*PI/180
- If Q1LongDirection="O"Then
- b1=-b1
- End If
- a2=(Q2Latitude+(Q2LatiDeg/60))*PI/180
- If Q2LatiDirection="N"Then
- a2=-a2
- End If
- b2=(Q2Longitude+(Q2LongDeg/60))*PI/180
- If Q2LongDirection="O"Then
- b2=-b2
- End If
- RawDelta=ACos(Cos(a1)*Cos(b1)*Cos(a2)*Cos(b2) + Cos(a1)*Sin(b1)*Cos(a2)*Sin(b2) + Sin(a1)*Sin(a2))
- CoordToDeltaNauticalMiles=RawDelta * 3443.9
- End Function
-
- Sub Main()
- MsgBox "Distance entre Montréal et Paris en Km: " & CStr(CoordToDeltaKm(45, 31,"N",73, 34,"O",48, 50,"N", 2, 20,"E")) & vbCrLf & _
- "Distance entre Montréal et Paris en Miles: " & CStr(CoordToDeltaStatuteMiles(45, 31,"N", 73, 34,"O", 48, 50,"N", 2, 20,"E")) & vbCrLf & _
- "Distance entre Montréal et Paris en Miles Nautique: " & CStr(CoordToDeltaNauticalMiles(45, 31,"N", 73, 34,"O", 48, 50,"N", 2, 20,"E"))
- End Sub
on obtiendra le résultat suivant:
Distance entre Montréal et Paris en Km: 5510.16761889Distance 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