GPS trace collection and edition with OpenGPSTracker and Viking
I don’t really have a bucket list, but I do have a list of things I want to do: I keep a short list of things to focus on and make progress. I review and update this list yearly or so. Since some time, I have been thinking about running a marathon, and this item has finally made it to this year’s focus list.
After reading a couple training plans, I prepared my own, fitting my schedule and time commitment. It would take me from (almost) 0 to marathon in 7 months. A bit short, but doable. I followed it until the half, but for various reasons, I finally put it on hold and postponed the marathon to next year.
Anyway, the goal of this article is not to talk about the training plan, but rather about the nice tools I have discovered and used the last couple months. It might help someone!
The objective was to be able to analyze my performance and follow my progress:
- During running, I recorded my performance as a GPS trace with OpenGPSTracker
- Later, I cleaned and analyzed the trace with Viking
Trace Collection: OpenGPSTracker
To collect GPS traces while I run I use the perfect Android app OpenGPSTracker. Sadly, development seems to be having some hiccups, and the app recently disappeared from the play store. Good news is that it is open source, so there is a chance you can compile it yourself.
The app is simple, without any fluff, and (used to) works well. When it is active, the app adds a waypoint every 30-60 sec (corresponds to 100-200 m when running). Running in straight lines works fine: time is of course accurate, and eventough the GPS points are not always pinpoint on the path due to GPS imprecision, it is good enough and does not impact too much the metrics I’m interest in (namely: distance and speed). But when turning 90 deg at a crossroad, the waypoint is seldom right on the corner: this means that the app thinks that I ran less distance that I did in reality, which shows up as a slower-than-in-reality speed.
This is very annoying to my perfectionist mind, so I wanted to postprocess my GPS traces to fix this issue. This is where Viking comes. I’ll cover that in the next section of this article.
The app can export (and also import) the GPS traces as .gpx files. This format is actually very easy to read/write. If you need to visualize some GPS coordinates, I highly recommend. In a few lines of Python you can get anything done. Again, simple but efficient.
Trace Edition: Viking
I tried several tools to visualize and edit my GPS traces, and Viking is the clear winer. It can display, but also edit GPS traces: split and join traces, delete and add trackpoints, …
Some of its features are not obvious, so here is my process to edit my GPS traces, roughly explained:
Showing the map (by default no map is shown - maybe for license reasons?)
- In the left panel (layers), right click on “Default map”, click “Properties”
- For “Map type”, select “OpenStreetMap (Mapnick)”
Viewing a GPS trace
- “File”, “Open”, then select your .gpx file
- In the left panel, open the layers and tracks. Right click on the track (deepest layer), click “Properties”
- Click on the “Speed-Time” tab
- Spot irregular patterns: very slow or very fast trackpoints
- Select the tool: “Tools”, “Edit trackpoint”
- Then, select the trackpoint: on the map, click on a trackpoint ; or on the previous graph, click somewhere on the graph (this will select the corresponding trackpoint on the map)
- You can:
- Update the coordinates or time
- Insert a new trackpoint
- Delete the trackpoint
- Move to the previous/next trackpoint (“Back”/“Forward”)
OpenGPSTracker is a very good tool to collect a GPS trace, although its development seems to be coming to an halt. Its export function works well and allow one to open the trace in an editing tool. Viking is my go-to tools for such task: it allows me to visualize the trace, and edit it to fix any irregularities. All of this is powered by open source, and also the gpx format, which is very easy to parse and generate.