For some time now I’ve been wanting to write my own Strava app but I’ve never gotten around to it. In any case, a simpler approach for now is to - at the very least - catalog my health and run data into my own repository for backup purposes. Strava does provide an api to do this, but it’s a bit limiting and doesn’t work very well unless you’ve got a full-fledged oauth webapp deployed - which is a bit annoying. So instead, I’ve opted to use their Export feature to just download all my information once a week.
The exported data from strava has a number of csv files (for me most of which are empty). The only ones I’m really interested in are the activities.csv and the activities/*.gpx files. All the activities are stored in GPS Exchange Format.
GPS Exchange Format is an XML schema designed as common GPS data format. It can describe waypoints, tracks, routes and with extensions it will store heartrates, speed, elevation data.
Exporting my activities data I’m able to see this information in XML.
<?xml version="1.0" encoding="UTF-8"?> <gpx creator="StravaGPX" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd" version="1.1" xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3"> <metadata> <time>2020-09-25T21:15:10Z</time> </metadata> <trk> <name>Afternoon Run</name> <type>9</type> <trkseg> <trkpt lat="30.5117300" lon="-97.7596260"> <ele>243.2</ele> <time>2020-09-25T21:15:10Z</time> <extensions> <gpxtpx:TrackPointExtension> <gpxtpx:hr>145</gpxtpx:hr> </gpxtpx:TrackPointExtension> </extensions> </trkpt> <trkpt lat="30.5117310" lon="-97.7596490"> <ele>243.2</ele> <time>2020-09-25T21:15:11Z</time> <extensions> <gpxtpx:TrackPointExtension> <gpxtpx:hr>145</gpxtpx:hr> </gpxtpx:TrackPointExtension> </extensions> </trkpt> ...
GPXSee is an open-source Qt-based GPS log viewer and analyzer supporting all sorts of GPS log file formats. It works really well and I highly recommend testing it out.
My hope is to dive a bit deeper into GPXSee’s implementation and try and build something I can display on here, or export elsewhere. In any case, I’ve just exported all my runs to my github/nyxtom/runs