|
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éss suivantes:
| Montréal |
45 31N |
73 34O |
| Paris |
48 50N |
2 20E |
A l'aide du code source Phalanger (PHP .NET) suivant, vous trouverez la réponse que vous souhaitez:
<?
function CoordToDeltaKm(
$Q1Latitude,$Q1LatiDeg,$Q1LatiDirection,$Q1Longitude,$Q1LongDeg,$Q1LongDirection,
$Q2Latitude,$Q2LatiDeg,$Q2LatiDirection,$Q2Longitude,$Q2LongDeg,$Q2LongDirection
) {
$a1=($Q1Latitude+($Q1LatiDeg/60))*pi()/180;
if($Q1LatiDirection=='N') $a1=-$a1;
$b1=($Q1Longitude+($Q1LongDeg/60))*pi()/180;
if($Q1LongDirection=='O') $b1=-$b1;
$a2=($Q2Latitude+($Q2LatiDeg/60))*pi()/180;
if($Q2LatiDirection=='N') $a2=-$a2;
$b2=($Q2Longitude+($Q2LongDeg/60))*pi()/180;
if($Q2LongDirection=='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;
}
function CoordToDeltaStatuteMiles(
$Q1Latitude,$Q1LatiDeg,$Q1LatiDirection,$Q1Longitude,$Q1LongDeg,$Q1LongDirection,
$Q2Latitude,$Q2LatiDeg,$Q2LatiDirection,$Q2Longitude,$Q2LongDeg,$Q2LongDirection
) {
$a1=($Q1Latitude+($Q1LatiDeg/60))*pi()/180;
if($Q1LatiDirection=='N') $a1=-$a1;
$b1=($Q1Longitude+($Q1LongDeg/60))*pi()/180;
if($Q1LongDirection=='O') $b1=-$b1;
$a2=($Q2Latitude+($Q2LatiDeg/60))*pi()/180;
if($Q2LatiDirection=='N') $a2=-$a2;
$b2=($Q2Longitude+($Q2LongDeg/60))*pi()/180;
if($Q2LongDirection=='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;
}
function CoordToDeltaNauticalMiles(
$Q1Latitude,$Q1LatiDeg,$Q1LatiDirection,$Q1Longitude,$Q1LongDeg,$Q1LongDirection,
$Q2Latitude,$Q2LatiDeg,$Q2LatiDirection,$Q2Longitude,$Q2LongDeg,$Q2LongDirection
) {
$a1=($Q1Latitude+($Q1LatiDeg/60))*pi()/180;
if($Q1LatiDirection=='N') $a1=-$a1;
$b1=($Q1Longitude+($Q1LongDeg/60))*pi()/180;
if($Q1LongDirection=='O') $b1=-$b1;
$a2=($Q2Latitude+($Q2LatiDeg/60))*pi()/180;
if($Q2LatiDirection=='N') $a2=-$a2;
$b2=($Q2Longitude+($Q2LongDeg/60))*pi()/180;
if($Q2LongDirection=='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;
}
echo "Distance entre Montréal et Paris en Km: ".CoordToDeltaKm(45, 31,'N', 73, 34,'O', 48, 50,'N', 2, 20,'E')."\n";
echo "Distance entre Montréal et Paris en Miles: ".CoordToDeltaStatuteMiles(45, 31,'N', 73, 34,'O', 48, 50,'N', 2, 20,'E')."\n";
echo "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: 5201.52459319
Distance entre Montréal et Paris en Miles: 3232.07308173
Distance entre Montréal et Paris en Miles Nautique: 2808.64386116
|
|