Friday, November 26, 2021

 Strava GPX export and how to fix times

If you are on Strava you can usually not easily download gpx track from your friends without being a subscriber. There exits browser extensions fro chrome or firefox that can help you with that.

What I noticed however is that the timestamps within such exported track are based on Unix epoch.

In addition the whole file usually comes without end-of-line characters.

To fix the latter first you can use gpsbabel and use 'gpx' for input  as well as for output type. This literally will reformat the gpx to make it better readable in you favorite editor (mine is emacs btw).

$ gpsbabel -i gpx -f 1234.gpx  -o gpx -F 1234_babel1.gpx

I also found that the first trackpoint was without a timestamp, so you might want to fix it or just delete this trackpoint.

As an example it might look like this:

      <trkpt lat="50.144884000" lon="5.718563000">

As you can see the time starts at unix epoch (Zulu).

To fix this note down the real ZULU time when the run happend (in Strava that is shown for that activity). Let say that run started at 6:00 PM on Friday, February 21, 2020 then we can get the epoch offset (seconds after epoch) like this:

$ date --date='02/21/2020 17:00:00Z' +"%s"

Now use gpsbabel to add the offset, of course you can directly work on the original file skipping the first step above to just re-write the same file with newlines:

$ ./gpsbabel/gpsbabel -i gpx -f 1234_babel1.gpx -x track,move=+1582304400s  -o gpx -F 1234_babel2.gpx 

... so why you want to do this??? In my case I wanted to create an animation with two gpx tracks where one was my run and the other was from someone else (being on Strava as well) so to correlate the times we need to fix either my track (since it has correct timestamps, we could normalize to epoch) or do what is described here.

Then you use  to generate a video file like this  one:  LegendsTrail_GPX-Animation.mp4