Friday, April 19, 2013

How do services like Runtastic refine elevation of my GPS tracks?

How Does elevation refinement work?

Recently I recorded a load of GPS tracks during my running workouts. Those tracks a recorded with a GPS watch and I tend to upload those tracks to a fitness service - specifically to - in order to review my runs, obtain statistics and share runs with my friends. Similar to other web services offers the functionality to refine the elevation of the track recorded. This makes sense as most of the times the track shows peaks and lows which cumulate to unrealistic altitude difference. So far so good - but how does this work?

My initial assumption - maybe driven by the fact that you can trigger  the elevation refinement next to the map plotting your run in - was,  that they would use the elevation information coming from the map provider to correct the elevation. So basically for each track point they would need to obtain the elevation information and correct the track. Quite some effort and since elevation API provider like Google enforce limits to the number of API calls you could make or charge for them, this might be too much effort.
Alternatively they could use some kind of filter (e.g. like outlined in This would allow them to smoothen the elevation information without dependency to external knowledge.

So what is the truth? Hard to say as I couldn't find any information on this topic on What now? Experiments - what else? If we could have GPS tracks which are not made on the ground (e.g. during walking/running on the ground), but above the ground, we should be able to figure out which approach has been taken. If it is map information based, those tracks should be refined to the ground, while a pure filter approach should just smoothen the elevation curve, but not map it to the ground.

Experiment #1: GPS track on the plane

So first idea is simple. If I can not run on the sky, I need to board a plane. Luckily I had the opportunity to track the launch of a flight from London Heathrow to Dusseldorf. Unfortunately the watch lost GPS signal after 150km, but this should be good enough for our purpose.

The screenshot below illustrates, how the track looks like without any elevation refinement being made.

As you can see, the track shows a quite smooth elevation curve, which actually shows to periods in time where the plane gained steadily height and finally a small adjusting to travel height, which is slightly above 5000m. So far so good. What happens if we ask to adjust the elevation? See screenshot below.

Whoa - I wouldn't have wanted to be in this flight. Two reasons: a) the former nice and smoothly curve is now showing a quite rough ride and b) the whole flight is shown to be below 150m.  So - without checking the geographic conditions - I would assume that the track has been mapped to ground height.

Let's do one more experiment...

Experiment #2: GPS track on a - presumably unknown - landmark

What else can we do? One of my favoured local running tracks goes up to a landmark called Tetraeder (, sorry only German). 

The landmark is placed on a mine heap, which is about 90m higher than the surrounding are. The Tetraeder itself can be climbed up to an height of roughly 40m. What happens if we track a "run" on this one? First lets see the pure data (image below).
Elevation shows a more or less steady peak which consists on the way up to the mine heap and then climbing the stairs afterwards. So far so good - what happens if the refine elevation?
Ah ok - we lost the cap of the peak in the elevation chart. Looks like that uses some elevation data provide which is not aware of the landmark, which results in removing the height being gained on the stairs up to the landmark - and I can assure you that is was quite some effort to get up  there ... ;-).


Looks like that the initial assumption that is using some elevation data secondary to the GPS track being uploaded is correct. This would mean that you would struggle, if you are trying to use this service for e.g. managing your ultra aviation tracks, but this is no use case for me anyway. Wonder if I should upload this to ;-) Thanks for your patience...


I just found which explains how strava - another runtastic competitor  is dealing with elevation data. They consult elevation databases.

Another Update:

I just found another service - which looks promising. I didn't tested it yet, but you can use the online hosted version or run your own. Seems to be around for quite some time, not sure why I never came across it. I will give it a try. On the topic of elevation correction, they provide some insight in a blog post - (German only).