1
루프를 gpx 파일로 보내고 총 거리를 계산하고 싶습니다. 나는 위의 긴 점 두 세트 사이의 거리를 계산할 수있는 함수를 가지고 있으며, gpx 파일 trkseg를 통해 & 루프를 읽는 simplexml을 설정했다.PHP GPX를 반복하여 트랙의 총 거리를 계산합니다.
나는 두 세트의 lat long 값을 총 거리 var에 추가 한 다음 다음 값 세트로 루프하는 다음 단계로 넘어 가기 위해 정말 고심하고있다. 누군가가 PHP로 올바른 방향으로 나를 가리킬 수 있습니까?
<?php
// Funcntion for calculating distance between to sets of lat/long points
function distance($lat1, $lon1, $lat2, $lon2, $unit) {
$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);
$miles = $dist * 60 * 1.1515;
$unit = strtoupper($unit);
if ($unit == "K") {
return ($miles * 1.609344);
} else if ($unit == "N") {
return ($miles * 0.8684);
} else {
return $miles;
}
}
// Read GPX file, find track lat/lon attributes and loop
$xml=simplexml_load_file("mygpxfile.gpx");
echo $xml->trk->name;
echo "<br>";
foreach($xml->trk->trkseg->{'trkpt'} as $trkpt) {
$trkptlat = $trkpt->attributes()->lat;
$trkptlon = $trkpt->attributes()->lon;
}
// How do I use the function above to now loop through all the values to calc total distance?
// $total_distance = distance($lat1, $lon1, $lat2, $lon2, $unit)
?>
감사합니다. 어떻게 작동하는지 확인할 수 있습니다. 나는 경고를 받는다 : 경고 : deg2rad()는 매개 변수 1이 double 일 것으로 기대한다. xml.php의 24 행에 주어진 객체 Line 24 : $ dist = sin (deg2rad ($ lat1)) * sin (deg2rad ($ lat1) cos (deg2rad ($ lat1)) * cos (deg2rad ($ lat2)) * cos (deg2rad ($ theta)); 변수 유형을 설정하는 것과 관련이 있습니까? – user1819574