| Home | Products | Issue Tracker | Service Providers | FAQ | Twitter | Download

# GPS Exchange Format (GPX)

GPX (the GPS Exchange Format) is a light-weight XML data format containing GPS data (waypoints, routes, and tracks). For more information see the official GPX site.

## File listing

All waypoints, routes, and tracks are stored in a single .gpx file.

## Data Access / Connection Method

- GPX access is available through OGR. See the OGR driver page for specific driver information.

- A relative path to the .gpx file can be used in the mapfile LAYER’s CONNECTION string.

- The feature type is specified in the DATA parameter

    - the “tracks” feature type will usually be the track line

    - the “track_points” feature type will usually be the points that make up the track line

## OGRINFO Examples

First you should make sure that your GDAL/OGR build contains the “GPX” driver, by using the ‘–formats’ command:

    >ogrinfo --formats
       Loaded OGR Format Drivers:
       ...
       -> "CSV" (read/write)
       -> "GML" (read/write)
       -> "GPX" (read/write)
       -> "KML" (read/write)
       ...

If you don’t have the driver, you might want to try the FWTools or MS4W packages, which include the driver.

Once you have the GPX driver you are ready to try an ogrinfo command on your file to get a list of feature types:

    >ogrinfo test.gpx
       INFO: Open of `test.gpx'
             using driver `GPX' successful.
       1: waypoints (Point)
       2: routes (Line String)
       3: tracks (Multi Line String)
       4: route_points (Point)
       5: track_points (Point)

Now use ogrinfo to get information on one of the feature types:

    >ogrinfo test.gpx track_points -summary
       INFO: Open of `test.gpx'
             using driver `GPX' successful.

       Layer name: track_points
       Geometry: Point
       Feature Count: 661
       Extent: (-66.694270, 47.985570) - (-66.675222, 47.990791)
       Layer SRS WKT:
       GEOGCS["WGS 84",
           DATUM["WGS_1984",
               SPHEROID["WGS 84",6378137,298.257223563,
                   AUTHORITY["EPSG","7030"]],
               AUTHORITY["EPSG","6326"]],
           PRIMEM["Greenwich",0,
               AUTHORITY["EPSG","8901"]],
           UNIT["degree",0.01745329251994328,
               AUTHORITY["EPSG","9122"]],
           AUTHORITY["EPSG","4326"]]
       track_fid: Integer (0.0)
       track_seg_id: Integer (0.0)
       track_seg_point_id: Integer (0.0)
       ele: Real (0.0)
       time: DateTime (0.0)
       magvar: Real (0.0)
       geoidheight: Real (0.0)
       name: String (0.0)
       cmt: String (0.0)
       desc: String (0.0)
       src: String (0.0)
       ...

## Mapfile Example

Since you have confirmed that OGR can read your GPX file, now you can create a MapServer layer:

    LAYER
      NAME gpx
      TYPE POINT
      STATUS ON
      CONNECTIONTYPE OGR
      CONNECTION test.gpx
      DATA "track_points"
      CLASS
        NAME "gpx"
        STYLE
          SYMBOL 'circle'
          COLOR 0 119 255
          SIZE 2
        END
      END
    END # layer