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 (seegpxo.smooth()below),plot(): plot trajectory data using a combination of shortnames (see shortnames below); also takesmatplotlib.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 thefoliumpackage,mplleaflet_map(): plot trajectory on a map, usingmplleaflet.show(),
Attributes
file:pathlib.Pathfrom which data originatesdata(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)
- numpy
- pandas
- matplotlib
- importlib-metadata
- gpxpy (https://github.com/tkrajina/gpxpy)
- vincenty (https://github.com/maurycyp/vincenty)
Optional:
- folium
- mplleaflet (https://github.com/jwass/mplleaflet)
Author
Olivier Vincent
License
BSD 3-Clause (see LICENCE file)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d0ad998eafa5a4301ea06c0b9951dd590ae888127a7aac2683903caa92ae72b
|
|
| MD5 |
dcb44ef31d0c108c06a422b9a986b3f9
|
|
| BLAKE2b-256 |
d02def90786ee498107a6d970202f02c431b9b54277411e51ac97424eabe029e
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a15facad4be4a04be9b8ffa052bc7624a2da23cf950bfc04711c3620dac326e
|
|
| MD5 |
f5acda5cabbc6c14f00290e48d65a17c
|
|
| BLAKE2b-256 |
7187a9b5a3b01d3e3a4056610133ad391183c4660ee647950c3a7a7f14171a19
|