Hallo,
also ich möchte gern mit PHP eine gpx Datei auslesen um Name und Zeit auf einer Webseite ausgeben zu können, hab aber keinen Schimmer wie ich das hin bekommen kann.
Code GPX
So was ich benötige wäre nach <metadata> die Angaben zur Zeit und dann noch den Namen der zwischen <name>*</name> steht.
Alle anderen Daten hab ich schon mit einem anderen Script auslesen können.
Wobei $filename der Dateiname der gpx Datei ist.
Auf der Ausgabe Seite steht dann das
Kann mir hier jemand weiterhelfen um das letzte kleine übel noch hinzu bekommen. Ach so jetzt nicht wundern das obere Script ist nicht von mir sondern aus einem OSM Forum wo es nur um die Koordinaten und Höhen ging, hab es nur ein wenig angepasst. Meine PHP Kenntnisse sind nicht ganz so toll.
Gruß und schon mal Danke. :thx:
also ich möchte gern mit PHP eine gpx Datei auslesen um Name und Zeit auf einer Webseite ausgeben zu können, hab aber keinen Schimmer wie ich das hin bekommen kann.
Code GPX
Code:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<gpx
version="1.1"
creator="Touratech QV 4.0.127 Standard - http://www.ttqv.com"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:topografix="http://www.topografix.com/GPX/Private/TopoGrafix/0/1"
xmlns="http://www.topografix.com/GPX/1/1"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
<metadata>
<time>2010-04-16T15:02:11Z</time>
<bounds minlat="50.778714" minlon="14.805415" maxlat="50.909815" maxlon="14.915388"/>
</metadata>
<trk>
<name>Meine-erste-Tour</name>
<trkseg>
<trkpt lat="50.909664" lon="14.809377"><ele>240</ele><time>2010-04-16T08:14:55Z</time></trkpt>
<trkpt lat="50.909676" lon="14.809383"><ele>243</ele><time>2010-04-16T08:14:58Z</time></trkpt>
<trkpt lat="50.909674" lon="14.809386"><ele>243</ele><time>2010-04-16T08:14:59Z</time></trkpt>
</trkseg>
</trk>
<extensions>
</extensions>
</gpx>
Alle anderen Daten hab ich schon mit einem anderen Script auslesen können.
Wobei $filename der Dateiname der gpx Datei ist.
PHP:
Dateiname dieser PHP Datei - "auslese.php"
$filename der Dateiname der gpx Datei zB. test.gpx
<?php
//Funktion zum Auslesen von lat und lon aus der gpx-Datei
function getlatlon($quelle, $suche) {
$suche= " ".$suche."=\"";
if (strpos($quelle, $suche) == false){
$suche = str_replace("\"","'",$suche);
}//end if
$quelle = substr($quelle, strpos($quelle, $suche)+ strlen($suche));
return str_replace(",",".",substr($quelle, 0, strpos($quelle, "\"")));
}//end function
//Funktion zum Auslesen von ele aus der gpx-Datei
function getele($quelle) {
$quelle = substr($quelle, strpos($quelle, "<ele>")+ strlen("<ele>"));
return str_replace(",",".",substr($quelle, 0, strpos($quelle, "</ele>")));
}//end function
?>
<?php
// erstellt die URL des Tracks aus dem Unterordner gpx
$track = "../110-gpx/".$filename;
if (file_exists($track)) {//prüfen, ob angegebene Datei vorhanden ist
//Koordinaten und Höhen in Array schreiben
$fp = fopen( $track, "r"); // gpx-Datei öffnen
$n=0;
$m=0;
while (! feof( $fp )) {
$zeile = fgets( $fp , 4096);
if (strpos($zeile,"<trkpt") !== false) {
$lat[$n] = getlatlon($zeile, "lat");
$lon[$n] = getlatlon($zeile, "lon");
$n++;
} //end if
if (strpos($zeile,"<ele>") !== false) {
$ele[$m] = getele($zeile);
$m++;
}//end if
} //end while
}//end if
fclose($fp); //gpx-Datei schließen
//Berechnung der Tracklänge
$i = 0;
$r0 = 6371.0;//Erdradius
$laenge = 0.0;
while ($i < ($n-1)) {
if(($lat[$i] != $lat[$i+1]) && ($lon[$i] != $lon[$i+1])) {
$a = (90.0 - $lat[$i]) * M_PI / 180.0;
$b = (90.0 - $lat[$i+1]) * M_PI / 180.0;
$gamma = (abs($lon[$i+1] - $lon[$i])) * M_PI / 180.0;
$c = $r0 * acos(cos($a)*cos($b) + sin($a)*sin($b)*cos($gamma));
$laenge = $laenge + $c;
}//end if
$i++;
}//end while
$laenge = (round(10 * $laenge) / 10)." km";
$laenge = str_replace(".",",",$laenge);
//Höhenmeter addieren
if ($m > 0) {
$i=0;
$up=0.0;
$down=0.0;
while ($i < ($m-1)) {
if ($ele[$i] < $ele[$i+1]) {
$up = $up + $ele[$i+1] - $ele[$i];
}//end if
if ($ele[$i] > $ele[$i+1]) {
$down = $down + $ele[$i] - $ele[$i+1];
}//end if
$i++;
}//end while
$up = (round(10 * $up) / 10)." m";
$up = str_replace(".",",",$up);
$down = -(round(10 * $down) / 10)." m";
$down = str_replace(".",",",$down);
$b_ele = true;
}//end if
else {
$down = "n/a";
$up = "n/a";
$b_ele = false;
}//end else
?>
PHP:
/* So jetzt die Daten aus der gpx auslesen */
include("auslese.php");
echo 'Trackname: ' .$filename.'<br />';
echo 'Tracklänge: ' .$laenge.'<br />';
echo 'Anstieg: '.$up.'<br />';
echo 'Abstieg: '.$down.'<br />';
Gruß und schon mal Danke. :thx: