Cette fonction permet de calculer la longueur, en mètres, entre deux points GPS (exprimés en degrés décimaux). La formule utilisée est issue d'un document de l'IGN : http://geodesie.ign.fr/contenu/fichiers/Distance_longitude_latitude.pdf
/**
* Fonction de calcul de la longueur entre deux points GPS
*
* @param float $x1
*
: longitude départ, en degrés décimaux
* @param float $y1
*
: latitude départ, en degrés décimaux
* @param float $x2
*
: longitude arrivée, en degrés décimaux
* @param float $y2
*
: latitude arrivée, en degrés décimaux
* @return number : longueur entre les deux points, en mètres
*/
function calcul_distance_gps($x1, $y1, $x2, $y2) {
$fields = array (
"x1",
"x2",
"y1",
"y2"
);
$numeric = true;
foreach ( $fields as $field ) {
if (! is_numeric ( $$field ))
$numeric = false;
}
if ($numeric == true) {
$diametre_terre = 6378137;
/*
* Transformation en radian
*/
$rad = array ();
foreach ( $fields as $field ) {
$rad [$field] = deg2rad ( $$field );
// echo $field." : ".$$field." - ".$rad[$field]."<br>";
}
/*
* Calcul de l'écart de longitude
*/
$dlong = $rad ["x2"] - $rad ["x1"];
$sab = acos ( sin ( $rad ["y1"] ) * sin ( $rad ["y2"] ) + cos ( $rad ["y1"] ) * cos ( $rad ["y2"] ) * cos ( $dlong ) );
$s = $sab * $diametre_terre;
return $s;
}
}