donc je veux charger un fichier GPX et obtenir tous les cordinates et calculer la distance totale parcourue, mais im coincé avec ce code:Php - obtenir la distance entre plusieurs points à l'aide lon, lat et alt
<?php
$xml = simplexml_load_file("data/example.gpx");
echo $xml->metadata->author->name;
echo "</br>";
echo "</br>";
echo "</br>";
$lon1=0;
$lat1=0;
$lon2=0;
$lat2=0;
$alt1=0;
$alt2=0;
$dist=0;
$brr = count($xml->trk->trkseg);
$brf = 0;
for($i = 0; $i<$brr; $i++){
$br = count($xml->trk->trkseg[$i]->trkpt);
$brf= $brf + $br;
for($j = 0; $j<$br;$j++){
$lat2= (float) $xml->trk->trkseg[$i]->trkpt[$j]['lat'];
$lon2= (float) $xml->trk->trkseg[$i]->trkpt[$j]['lon'];
$alt2= (float) $xml->trk->trkseg[$i]->trkpt[$j]->ele;
$lon2 = $alt2 * cos($lat2) * sin($lon2);
$lat2 = $alt2 * sin($lat2);
$alt2 = $alt2 * cos($lat2) * cos($lon2);
if ($j==0){ //this is just for the first time because first points are not set
$lat1=$lat2;
$lon1=$lon2;
$alt1= $alt2;
}
$cdist = sqrt(pow(($lat2-$lat1),2) + pow(($lon2-$lon1),2) + pow(($alt2-$alt1),2));
$dist = $dist + $cdist;
$lat1=$lat2;
$lon1=$lon2;
$alt1=$alt2;
}
}
echo 'Distance = '.$dist;
echo '</br>';
echo 'number of coordinates = '.$brf;
?>
comme résultat pour la distance je reçois le numéro 4592.6244157763 au lieu de 4.10km (~~ 4100), mais les coordonnées sont bonnes, il passe par toutes les coordonnées. (Également, le fichier GPX est de Endomondo si elle importe)
est-ce un problème mathématique ou un problème de programmation? – Jeff
Le grand mystère est comment vous pouvez obtenir 4592 lorsque lat1/lon1 et lat2/lon2 est 0. – Andreas
@Andreas première ligne dans la boucle 'for'. – Jeff