Tout dépend de la précision que tu veux et quelle epsilloïde de référence comptes-tu utiliser. Normalement c'est WGS84.
Une bonne précision est obtenue avec la méthode de Vincenty. Celle de Haversine est encore plus précise.
cs_Multiprise
Messages postés63Date d'inscriptionjeudi 4 décembre 2003StatutMembreDernière intervention23 avril 2013 30 déc. 2012 à 16:32
Je n'en suis pas l'auteur mais voici deux fonctions qui te permettront de calculer la distance en deux coordonnées géographiques.
Public Function DistanceP2P(ByVal gLatitude1 As Double, ByVal gLongitude1 As Double, ByVal gLatitude2 As Double, ByVal gLongitude2 As Double) As Double
Dim gRayonMoyen As Integer
Dim gDistance As Double
DistanceP2P = 0
gRayonMoyen = 6371 ' Rayon moyen de la terre, en kms
PI = 4 * Atn(1) 'Nombre PI que j'aime à faire connaître un nombre util aux sages etc...
' Convertion des degrés en radians
gLatitude1 = Round((gLatitude1 * Pi) / 180, 10)
gLongitude1 = Round((gLongitude1 * Pi) / 180, 10)
gLatitude2 = Round((gLatitude2 * Pi) / 180, 10)
gLongitude2 = Round((gLongitude2 * Pi) / 180, 10)
' Calcul
gDistance = Round(ACos((Sin(gLatitude1) * Sin(gLatitude2)) + (Cos(gLatitude1) * Cos(gLatitude2) * Cos(gLongitude1 - gLongitude2))) * gRayonMoyen, 8)
' Résultat
DistanceP2P = gDistance * 1000
End Function
Private Function ACos(AngleRadian As Double) As Double
On Error GoTo GestErr
If AngleRadian <> 1 Then
ACos = Atn((AngleRadian * (-1)) / Sqr(((AngleRadian * (-1)) * AngleRadian) + 1)) + (Pi / 2)
Else
ACos = 0
End If
Exit Function
GestErr:
Debug.Print "Function ACos" & "/" & Err.Description
Err.Clear
On Error GoTo 0
End Function
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 30 déc. 2012 à 22:01
Bonjour, Multiprise,
relis donc :
... calculer une distance routière
entre 2 villes ...
Hein ...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.