2016-06-01 13 views
0

Was mache ich falsch? Ich versuche Entfernungen von einer GPX (lat, lon) Datei zu zählen, aber ich bekomme ein falsches Ergebnis.Wie korrekt zählen Abstand von GPX-Datei - PHP

function distance($lat1, $lon1, $lat2, $lon2) { 
    $theta = $lon1 - $lon2; 
    $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); 
    $dist = acos($dist); 
    $dist = rad2deg($dist); 
    $kilometers = $dist * 60 * 1.1515 ; 
    return $kilometers; 
} 

$gpx_file_source = simplexml_load_file($gpx_patch); 
$j=0; 
foreach($gpx_file_source->trk->trkseg->trkpt as $point){ 
     if($j%2==0){ 
      $lat1=$point->attributes()[0]; 
      $lon1=$point->attributes()[1]; 
     }else{ 
      $lat2=$point->attributes()[0]; 
      $lon2=$point->attributes()[1]; 
      $totaldistance=distance(''.$lat1.'', ''.$lon1.'', ''.$lat2.'', ''.$lon2.'').; 
      $totaldistance+=$totaldistance; 
     } 
    $j++; 
} 
echo $totaldistance; //0.00011797444243905 

Mein Ergebnis ist: ,00011797444243905 km

Richtiges Ergebnis: 17,35 km

GPX-Datei:http://itros.us/distance.gpx

+0

($ dist * 60 * 1.1515 * 1.609344 * 1000) Sie haben es in Metern. –

Antwort

0

I Funktion geändert zu zählen und arbeitet!

3958*3.1415926*sqrt(($lat2-$lat1)*($lat2-$lat1) + cos($lat2/57.29578)*cos($lat1/57.29578)*($lon2-$lon1)*($lon2-$lon1))/180