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 Perl suivant, vous trouverez la réponse que vous souhaitez :
- #!usr/bin/perl
-
- use Math::Trig;
-
- sub CoordToDeltaKm() {
- my($Q1Latitude,$Q1LatiDeg,$Q1LatiDirection,$Q1Longitude,$Q1LongDeg,$Q1LongDirection, $Q2Latitude,$Q2LatiDeg,$Q2LatiDirection,$Q2Longitude,$Q2LongDeg,$Q2LongDirection) = @_;
- $a1=($Q1Latitude+($Q1LatiDeg/60))*pi/180;
- if($Q1LatiDirection eq 'N') {
- $a1=-$a1;
- }
- $b1=($Q1Longitude+($Q1LongDeg/60))*pi/180;
- if($Q1LongDirection eq 'O') {
- $b1=-$b1;
- }
- $a2=($Q2Latitude+($Q2LatiDeg/60))*pi/180;
- if($Q2LatiDirection eq 'N') {
- $a2=-$a2;
- }
- $b2=($Q2Longitude+($Q2LongDeg/60))*pi/180;
- if($Q2LongDirection eq 'O') {
- $b2=-$b2;
- }
- $RawDelta = acos(cos($a1)*cos($b1)*cos($a2)*cos($b2) + cos($a1)*sin($b1)*cos($a2)*sin($b2) + sin($a1)*sin($a2));
- return $RawDelta * 6378.0;
- }
-
- sub CoordToDeltaStatuteMiles() {
- my($Q1Latitude,$Q1LatiDeg,$Q1LatiDirection,$Q1Longitude,$Q1LongDeg,$Q1LongDirection, $Q2Latitude,$Q2LatiDeg,$Q2LatiDirection,$Q2Longitude,$Q2LongDeg,$Q2LongDirection) = @_;
- $a1=($Q1Latitude+($Q1LatiDeg/60))*pi/180;
- if($Q1LatiDirection eq 'N') {
- $a1=-$a1;
- }
- $b1=($Q1Longitude+($Q1LongDeg/60))*pi/180;
- if($Q1LongDirection eq 'O') {
- $b1=-$b1;
- }
- $a2=($Q2Latitude+($Q2LatiDeg/60))*pi/180;
- if($Q2LatiDirection eq 'N') {
- $a2=-$a2;
- }
- $b2=($Q2Longitude+($Q2LongDeg/60))*pi/180;
- if($Q2LongDirection eq 'O') {
- $b2=-$b2;
- }
- $RawDelta = acos(cos($a1)*cos($b1)*cos($a2)*cos($b2) + cos($a1)*sin($b1)*cos($a2)*sin($b2) + sin($a1)*sin($a2));
- return $RawDelta * 3963.1;
- }
-
- sub CoordToDeltaNauticalMiles( ) {
- my($Q1Latitude,$Q1LatiDeg,$Q1LatiDirection,$Q1Longitude,$Q1LongDeg,$Q1LongDirection, $Q2Latitude,$Q2LatiDeg,$Q2LatiDirection,$Q2Longitude,$Q2LongDeg,$Q2LongDirection) = @_;
- $a1=($Q1Latitude+($Q1LatiDeg/60))*pi/180;
- if($Q1LatiDirection eq 'N') {
- $a1=-$a1;
- }
- $b1=($Q1Longitude+($Q1LongDeg/60))*pi/180;
- if($Q1LongDirection eq 'O') {
- $b1=-$b1;
- }
- $a2=($Q2Latitude+($Q2LatiDeg/60))*pi/180;
- if($Q2LatiDirection eq 'N') {
- $a2=-$a2;
- }
- $b2=($Q2Longitude+($Q2LongDeg/60))*pi/180;
- if($Q2LongDirection eq 'O') {
- $b2=-$b2;
- }
- $RawDelta = acos(cos($a1)*cos($b1)*cos($a2)*cos($b2) + cos($a1)*sin($b1)*cos($a2)*sin($b2) + sin($a1)*sin($a2));
- return $RawDelta * 3443.9;
- }
-
- print "Distance entre Montréal et Paris en Km: ".&CoordToDeltaKm(45, 31,'N', 73, 34,'O', 48, 50,'N', 2, 20,'E')."\n";
- print "Distance entre Montréal et Paris en Miles: ".&CoordToDeltaStatuteMiles(45, 31,'N', 73, 34,'O', 48, 50,'N', 2, 20,'E')."\n";
- print "Distance entre Montréal et Paris en Miles Nautique: ".&CoordToDeltaNauticalMiles(45, 31,'N', 73, 34,'O', 48, 50,'N', 2, 20,'E')."\n";
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 : Jeudi, le 17 janvier 2019