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 Rebol suivant, vous trouvez la réponse que vous souhaitez :
- REBOL [
- Title: "CoordToDelta"
- Version: 1.0.0
- Author: "Sylvain Maltais"
- Purpose: {Calcul la distance entre deux coordonnées de Longitude et Latitude.}
- ]
-
- Cos: function [a] [Result] [
- Result: cosine (57.295779513 * a)
- ]
-
- Sin: function [a] [Result] [
- Result: sine (57.295779513 * a)
- ]
-
- ArcCos: function [a] [Result] [
- Result: 0.017453292520 * (arccosine a)
- ]
-
- CoordToDeltaKm: function [
- Q1Latitude Q1LatiDeg Q1LatiDirection
- Q1Longitude Q1LongDeg Q1LongDirection
- Q2Latitude Q2LatiDeg Q2LatiDirection
- Q2Longitude Q2LongDeg Q2LongDirection
- ] [RawDelta] [
- pi: 3.141592653589793
- a1: (Q1Latitude + (Q1LatiDeg / 60.0)) * pi / 180.0
- if Q1LatiDirection = "N" [a1: - a1]
- b1: (Q1Longitude + (Q1LongDeg / 60.0)) * pi / 180.0
- if Q1LongDirection = "O" [b1: - b1]
- a2: (Q2Latitude + (Q2LatiDeg / 60.0)) * pi / 180.0
- if Q2LatiDirection = "N" [a2: - a2]
- b2: (Q2Longitude + (Q2LongDeg / 60.0)) * pi / 180.0
- if Q2LongDirection = "O" [b2: - b2]
- RawDelta: ArcCos (((cos a1)*(cos b1)*(cos a2)*(cos b2)) + ((cos a1)*(sin b1)*(cos a2)*(sin b2)) + ((sin a1)*(sin a2)))
- RawDelta: RawDelta * 6378.0
- ]
-
- CoordToDeltaStatuteMiles: function [
- Q1Latitude Q1LatiDeg Q1LatiDirection
- Q1Longitude Q1LongDeg Q1LongDirection
- Q2Latitude Q2LatiDeg Q2LatiDirection
- Q2Longitude Q2LongDeg Q2LongDirection
- ] [RawDelta] [
- pi: 3.141592653589793
- a1: (Q1Latitude + (Q1LatiDeg / 60.0)) * pi / 180.0
- if Q1LatiDirection = "N" [a1: - a1]
- b1: (Q1Longitude + (Q1LongDeg / 60.0)) * pi / 180.0
- if Q1LongDirection = "O" [b1: - b1]
- a2: (Q2Latitude + (Q2LatiDeg / 60.0)) * pi / 180.0
- if Q2LatiDirection = "N" [a2: - a2]
- b2: (Q2Longitude + (Q2LongDeg / 60.0)) * pi / 180.0
- if Q2LongDirection = "O" [b2: - b2]
- RawDelta: ArcCos (((cos a1)*(cos b1)*(cos a2)*(cos b2)) + ((cos a1)*(sin b1)*(cos a2)*(sin b2)) + ((sin a1)*(sin a2)))
- RawDelta: RawDelta * 3963.1
- ]
-
- CoordToDeltaNauticalMiles: function [
- Q1Latitude Q1LatiDeg Q1LatiDirection
- Q1Longitude Q1LongDeg Q1LongDirection
- Q2Latitude Q2LatiDeg Q2LatiDirection
- Q2Longitude Q2LongDeg Q2LongDirection
- ] [RawDelta] [
- pi: 3.141592653589793
- a1: (Q1Latitude + (Q1LatiDeg / 60.0)) * pi / 180.0
- if Q1LatiDirection = "N" [a1: - a1]
- b1: (Q1Longitude + (Q1LongDeg / 60.0)) * pi / 180.0
- if Q1LongDirection = "O" [b1: - b1]
- a2: (Q2Latitude + (Q2LatiDeg / 60.0)) * pi / 180.0
- if Q2LatiDirection = "N" [a2: - a2]
- b2: (Q2Longitude + (Q2LongDeg / 60.0)) * pi / 180.0
- if Q2LongDirection = "O" [b2: - b2]
- RawDelta: ArcCos (((cos a1)*(cos b1)*(cos a2)*(cos b2)) + ((cos a1)*(sin b1)*(cos a2)*(sin b2)) + ((sin a1)*(sin a2)))
- RawDelta: RawDelta * 3443.9
- ]
-
- print "Distance entre Montréal et Paris en Km: "
- print CoordToDeltaKm 45 31 "N" 73 34 "O" 48 50 "N" 2 20 "E"
- print "Distance entre Montréal et Paris en Miles: "
- print CoordToDeltaStatuteMiles 45 31 "N" 73 34 "O" 48 50 "N" 2 20 "E"
- print "Distance entre Montréal et Paris en Miles Nautique: "
- print 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.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 : Dimanche, le 4 janvier 2015