Skip to main content
gpxpy -- GPX file parser
========================

This is a simple python library for parsing and manipulating GPX files. GPX is an XML based format for GPS tracks.

You can see it in action on [my online GPS track editor and organizer](http://www.trackprofiler.com).

Usage
-----

import gpxpy
import gpxpy.gpx

# Parsing an existing file:
# -------------------------

gpx_file = open('test_files/cerknicko-jezero.gpx', 'r')

gpx = gpxpy.parse(gpx_file)

for track in gpx.tracks:
for segment in track.segments:
for point in segment.points:
print 'Point at ({0},{1}) -> {2}'.format(point.latitude, point.longitude, point.elevation)

for waypoint in gpx.waypoints:
print 'waypoint {0} -> ({1},{2})'.format(waypoint.name, waypoint.latitude, waypoint.longitude)

for route in gpx.routes:
print 'Route:'
for point in route:
print 'Point at ({0},{1}) -> {2}'.format(point.latitude, point.longitude, point.elevation)

# There are many more utility methods and functions:
# You can manipulate/add/remove tracks, segments, points, waypoints and routes and
# get the GPX XML file from the resulting object:

print 'GPX:', gpx.to_xml()

# Creating a new file:
# --------------------

gpx = gpxpy.gpx.GPX()

# Create first track in our GPX:
gpx_track = gpxpy.gpx.GPXTrack()
gpx.tracks.append(gpx_track)

# Create first segment in our GPX track:
gpx_segment = gpxpy.gpx.GPXTrackSegment()
gpx_track.segments.append(gpx_segment)

# Create points:
gpx_segment.points.append(gpxpy.gpx.GPXTrackPoint(2.1234, 5.1234, elevation=1234))
gpx_segment.points.append(gpxpy.gpx.GPXTrackPoint(2.1235, 5.1235, elevation=1235))
gpx_segment.points.append(gpxpy.gpx.GPXTrackPoint(2.1236, 5.1236, elevation=1236))

# You can add routes and waypoints, too...

print 'Created GPX:', gpx.to_xml()

XML parsing
-----------

If lxml is available, then it will be used for XML parsing.
Otherwise minidom is used.
Note that lxml is 2-3 times faster so, if you can choose -- use it :)

Pull requests
-------------

OK, so you found a bug and fixed it. Before sending a pull request -- check that all tests are OK with python 2.6+ and python 3+.

Run all tests with:

$ python -m unittest test
$ python3 -m unittest test

Run only minidom parser tests with:

$ python -m unittest test.MinidomTests
$ python3 -m unittest test.MinidomTests

Run only lxml parser tests with:

$ python -m unittest test.LxmlTests
$ python3 -m unittest test.LxmlTests

Run a single test with:

$ python -m unittest test.LxmlTests.test_method
$ python3 -m unittest test.LxmlTests.test_method

GPXInfo
-------

The repository contain a little command line utility to extract basic statistics from a file.
Example usage:

$ gpxinfo voznjica.gpx
File: voznjica.gpx
Length 2D: 63.6441229018
Length 3D: 63.8391428454
Moving time: 02:56:03
Stopped time: 00:21:38
Max speed: 14.187909492m/s = 51.0764741713km/h
Total uphill: 1103.1626183m
Total downhill: 1087.7812703m
Started: 2013-06-01 06:46:53
Ended: 2013-06-01 10:23:45

GPX Version:
------------

gpx.py can parse and generate GPX 1.0 files. Note that the generated file will always be a valid XML document, but it may not be (strictly speaking) a valid GPX document. For example, if you set gpx.email to "my.email AT mail.com" the generated GPX tag won't confirm to the regex pattern. And the file won't be valid. Most applications will ignore such errors, but... Be aware of this!

See also
--------

See also [srtm.py](https://github.com/tkrajina/srtm.py) if your track lacks elevation data.

License
-------

GPX.py is licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)

Metadata

Release files for gpxpy 0.8.8

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gpxpy 0.8.8
File Size Uploaded
gpxpy-0.8.8.tar.gz 16.5 kB Details

Release files / gpxpy-0.8.8.tar.gz

Download URL gpxpy-0.8.8.tar.gz
Size 16.5 kB
Tags Source
SHA-256 checksum
How to use checksums
ba11b4668348ce3114e66235ac7b7f2e36e8a989e62fb363318f3378c3955463
BLAKE2b-256 checksum
How to use checksums
b8b7f81c41bb1230f8dc4e68976d5ea570261411544b0b2e8d90839121d024b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.0

1 release file

1.4.2

1 release file

1.4.1

1 release file

1.4.0

1 release file

1.3.5

1 release file

1.3.4

1 release file

1.3.3

1 release file

1.3.2

1 release file

1.3.1

1 release file

1.2.0

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.0.0

1 release file

0.9.8

1 release file

0.9.6

1 release file

0.9.5

1 release file

0.9.4

1 release file

0.9.3

1 release file

0.9.2

1 release file

0.9.1

1 release file

0.9.0

1 release file

0.8.9

1 release file

This release

0.8.8 This release

1 release file

0.8.7

1 release file

0.8.6

1 release file

0.8.5

1 release file

0.8.0

1 release file

0.7.3

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.7.0

2 release files

0.6.1

2 release files

0.6.0

0.5

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page