Skip to main content

Load, analyze and plot GPS data from GPX files with numpy/pandas

Project description

About

Load GPS data from GPX files into Python as a pandas DataFrames. Initial parsing done using the gpxpy package. Trajectory plotting on a map available using folium or mplleaflet (optional).

Quick Start

Install

pip install gpxo

Load Track

import gpxo
track = gpxo.Track('ExampleTrack.gpx')

track.data is a pandas DataFrame containing time, position, elevation etc.; usual pandas methods can be used to analyze, manipulate and plot data.

Detailed Contents

Track class

Load, inspect and plot GPX data using the Track class, with the following methods and attributes.

Methods

  • smooth(): smooth position and elevation data (see gpxo.smooth() below),
  • plot(): plot trajectory data using a combination of shortnames (see shortnames below); also takes matplotlib.pyplot.plot() arguments/kwargs,
  • closest_to(): find index of point in trajectory closest to a (lat, long) point.
  • folium_map(): plot trajectory on a map, using the folium package,
  • mplleaflet_map(): plot trajectory on a map, using mplleaflet.show(),

Attributes

  • file: pathlib.Path from which data originates
  • data (pandas DataFrame): containing at least the keys 'latitude (°)', 'longitude (°)', and if available 'elevation (m)', 'time'; by default, the table will also include 'distance (km)', 'compass (°)', 'duration (s)', 'velocity (km/h)', calculated if possible during instantiation.

Miscellaneous

Outside of the Track class, the following standalone function is also available:

  • compass(pt1, pt2): compass bearing (°) between pt1 (lat1, long1) and pt2 (lat2, long2),
  • closest_pt(pt, trajectory): index of closest pt in trajectory (latitudes, longitudes) to specified pt (lat, long),
  • smooth(x, n, window): smooth 1-d array with a moving window of size n and type window.

Short names

Short name Corresponding data
t time
s duration (s)
d distance (km)
v velocity (km/h)
z elevation (m)
c compass (°)
x longitude (°)
y latitude (°)

Examples

See Jupyter Notebook Examples.ipynb (https://github.com/ovinc/gpxo/blob/master/Examples.ipynb) for a detailed example using real GPX data.

Quick example 1: Plot distance versus time and velocity versus position for a given track:

import gpxo
track = gpxo.Track('ExampleTrack.gpx')
track.plot('td', '--k')    # matplotlib styles can be given
track.plot('dv', c='red')  # matplotlib kwargs can be passed
track.data  # pandas dataframe with all data

Quick example 2: show the path of a GPX file on a map using the folium package:

import gpxo
track = gpxo.Track('ExampleTrack.gpx')
mymap = track.folium_map(color='red', tiles='OpenTopoMap')
mymap.show_in_browser()

Quick example 3: show the path of a GPX file on a map with color-coding corresponding to elevation, using mplleaflet (see Troubleshooting section below in case of error):

import gpxo
track = gpxo.Track('ExampleTrack.gpx')
track.map(plot='scatter', c=track.elevation, cmap='plasma')

Troubleshooting

In case of the following error:

'XAxis' object has no attribute '_gridOnMajor

when using the mplleaflet_map() method, try downgrading Matplotlib to version <= 3.3.2 or install a forked version of mplleaflet (see https://github.com/jwass/mplleaflet/issues/75).

Information

Requirements

Python >= 3.6

Dependencies

(automatically installed by pip if necessary)

Optional:

Author

Olivier Vincent

(ovinc.py@gmail.com)

License

BSD 3-Clause (see LICENCE file)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gpxo-0.3.0.tar.gz (4.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gpxo-0.3.0-py3-none-any.whl (10.8 kB view details)

Uploaded Python 3

File details

Details for the file gpxo-0.3.0.tar.gz.

File metadata

  • Download URL: gpxo-0.3.0.tar.gz
  • Upload date:
  • Size: 4.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.16

File hashes

Hashes for gpxo-0.3.0.tar.gz
Algorithm Hash digest
SHA256 8d0ad998eafa5a4301ea06c0b9951dd590ae888127a7aac2683903caa92ae72b
MD5 dcb44ef31d0c108c06a422b9a986b3f9
BLAKE2b-256 d02def90786ee498107a6d970202f02c431b9b54277411e51ac97424eabe029e

See more details on using hashes here.

File details

Details for the file gpxo-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: gpxo-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 10.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.0.1 CPython/3.10.16

File hashes

Hashes for gpxo-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3a15facad4be4a04be9b8ffa052bc7624a2da23cf950bfc04711c3620dac326e
MD5 f5acda5cabbc6c14f00290e48d65a17c
BLAKE2b-256 7187a9b5a3b01d3e3a4056610133ad391183c4660ee647950c3a7a7f14171a19

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page