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 !
- def CoordToDeltaKm (
- q1Latitude,q1LatiDeg,q1LatiDirection,q1Longitude,q1LongDeg,q1LongDirection,
- q2Latitude,q2LatiDeg,q2LatiDirection,q2Longitude,q2LongDeg,q2LongDirection
- )
- pi=3.141592653589793
- a1=(q1Latitude+(q1LatiDeg/60.0))*pi/180
- if q1LatiDirection=="N"
- a1=-a1
- end
- b1=(q1Longitude+(q1LongDeg/60.0))*pi/180
- if q1LongDirection=="O"
- b1=-b1
- end
- a2=(q2Latitude+(q2LatiDeg/60.0))*pi/180
- if q2LatiDirection=="N"
- a2=-a2
- end
- b2=(q2Longitude+(q2LongDeg/60.0))*pi/180
- if q2LongDirection=="O"
- b2=-b2
- end
- 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))
- return rawDelta * 6378.0
- end
-
- def CoordToDeltaStatuteMiles(
- q1Latitude,q1LatiDeg,q1LatiDirection,q1Longitude,q1LongDeg,q1LongDirection,
- q2Latitude,q2LatiDeg,q2LatiDirection,q2Longitude,q2LongDeg,q2LongDirection
- )
- pi=3.141592653589793
- a1=(q1Latitude+(q1LatiDeg/60.0))*pi/180
- if q1LatiDirection=="N"
- a1=-a1
- end
- b1=(q1Longitude+(q1LongDeg/60.0))*pi/180
- if q1LongDirection=="O"
- b1=-b1
- end
- a2=(q2Latitude+(q2LatiDeg/60.0))*pi/180
- if q2LatiDirection=="N"
- a2=-a2
- end
- b2=(q2Longitude+(q2LongDeg/60.0))*pi/180
- if q2LongDirection=="O"
- b2=-b2
- end
- 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))
- return rawDelta * 3963.1
- end
-
- def CoordToDeltaNauticalMiles(
- q1Latitude,q1LatiDeg,q1LatiDirection,q1Longitude,q1LongDeg,q1LongDirection,
- q2Latitude,q2LatiDeg,q2LatiDirection,q2Longitude,q2LongDeg,q2LongDirection
- )
- pi=3.141592653589793
- a1=(q1Latitude+(q1LatiDeg/60.0))*pi/180
- if q1LatiDirection=="N"
- a1=-a1
- end
- b1=(q1Longitude+(q1LongDeg/60.0))*pi/180
- if q1LongDirection=="O"
- b1=-b1
- end
- a2=(q2Latitude+(q2LatiDeg/60.0))*pi/180
- if q2LatiDirection=="N"
- a2=-a2
- end
- b2=(q2Longitude+(q2LongDeg/60.0))*pi/180
- if q2LongDirection=="O"
- b2=-b2
- end
- 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))
- return rawDelta * 3443.9
- end
-
- print "Distance entre Montréal et Paris en Km: "+String(CoordToDeltaKm(45, 31,'N', 73, 34,'O', 48, 50,'N', 2, 20,'E'))
- print "Distance entre Montréal et Paris en Miles: "+String(CoordToDeltaStatuteMiles(45, 31,'N', 73, 34,'O', 48, 50,'N', 2, 20,'E'))
- 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.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 23 novembre 2014