Crate gpx[][src]

Expand description

gpx is a library for reading and writing GPX (GPS Exchange Format) files. It uses the primitives provided by geo-types to allow for storage of GPS data.


use std::io::BufReader;
use std::fs::File;

use gpx::read;
use gpx::{Gpx, Track, TrackSegment};

// This XML file actually exists — try it for yourself!
let file = File::open("tests/fixtures/wikipedia_example.gpx").unwrap();
let reader = BufReader::new(file);

// read takes any io::Read and gives a Result<Gpx, Error>.
let gpx: Gpx = read(reader).unwrap();

// Each GPX file has multiple "tracks", this takes the first one.
let track: &Track = &gpx.tracks[0];
assert_eq!(, Some(String::from("Example GPX Document")));

// Each track will have different segments full of waypoints, where a
// waypoint contains info like latitude, longitude, and elevation.
let segment: &TrackSegment = &track.segments[0];

// This is an example of retrieving the elevation (in meters) at certain points.
assert_eq!(segment.points[0].elevation, Some(4.46));
assert_eq!(segment.points[1].elevation, Some(4.94));
assert_eq!(segment.points[2].elevation, Some(6.87));


errors provides error generics for the gpx parser.


Gpx is the root element in the XML file.

Information about the copyright holder and any license governing use of this file.

Link represents a link to an external resource.

Metadata is information about the GPX file, author, and copyright restrictions.

Person represents a person or organization.

Route represents an ordered list of waypoints representing a series of turn points leading to a destination.

Track represents an ordered list of points describing a path.

TrackSegment represents a list of track points.

Waypoint represents a waypoint, point of interest, or named feature on a map.


Type of the GPS fix.

Allowable GPX versions. Currently, only GPX 1.0 and GPX 1.1 are accepted.


Reads an activity in GPX format.

Writes an activity to GPX format.

Writes an activity to GPX format.