How do I read values from a .GPX file in PHP?

8.5k views Asked by At

I have a problem that I have been trying to solve for two days now and I can't find the information I need to solve it.

What I want to do is take the lat, lon and ele values from a .gpx file and put them into a table.

I made pages to let users upload the gpx files onto the server. I then make a new table called one, two, three etc. the next number in line in my database called 'vluchten'.

The table has fields for lat, lon and ele, all doubles.

Now I need to open any .gpx file that a user might upload and extract the lats, lons and eles into my table.

I have already looked into using the php filesystem functions (fopen, fseek, etc.) but they don't seem to be usefull for my needs. I also tried reading it as an XML which didn't work either (maybe I made mistakes).

Any suggestions on how I might be able to take values from .gpx files and put them in a database table are very welcome! The PHP page will receive the table name that the lat, lon and ele need to go into in a $_POST['name'].

So in short my question is: How do I take lon, lat and ele out of a .gpx and put them in a table using SQL?

2

There are 2 answers

0
O. Jones On BEST ANSWER

This little snippet of php code will read every waypoint from a gpx file.

You can write some SQL code to insert a row for each waypoint into your table.

$gpx = simplexml_load_file("test.gpx");

foreach ($gpx->wpt as $pt) {
    $lat = (string) $pt['lat'];
    $lon = (string) $pt['lon'];
    $ele = (string) $pt->ele;
    $name = (string) $pt->name;
}

unset($gpx);

Similar code will extract trk->trkseg->trkpt and rte->rtept data from the xml.

0
დავით გაჩეჩილაძე On

this code is for reading gpx / gps file ##

its simple xml nothing more

 <?php
//open gpx file
$gpx = simplexml_load_file("test.gpx");
foreach ($gpx->trk as $trk) {
    foreach($trk->trkseg as $seg){
        foreach($seg->trkpt as $pt){
            echo "<p> lat- ";
            echo $pt["lat"];
            echo "   lon-";
            echo $pt["lon"];
            echo"<p>";
        }}}
unset($gpx);
?>