Recording movement using GPS devices is always subject to error but when it comes to elevation data the difference in recorded values between two or more people on an identical ride can be rather dramatic. This difference can become even more extreme if the there is some rain in the air when some devices carry on unaffected whilst others hang up their barometers in disgust. Here I’ll present a small comparison of various recordings of elevation from Stage 16 of the 2015 Giro d’Italia which although not a typical ride for the most of us, was affected by fairly typical weather.

Stage 16 Giro d’Italia 2015

This stage will be known for teams Katusha and Astana attacking a delayed Alberto Contador on the descent of the Passo del Tonale and the resulting punishment Contador handed back out on the Passo del Mortirolo catching and then dropping Fabio Aru.

The official stats of the stage were 174km and 4,500m of climbing. It isn’t clear how that elevation total was calculated but even if you just take sum of the difference between the minimum and maximum heights of the 5 main climbs of the day you get a total of 4,413m so 4,500m isn’t far off.

Here is the profile as generated using Strava’s excellent Route planning tool (174.8km and 5,429m of climbing):

The elevation profile (and hence the total elevation) is, I believe, calculated using the global SRTM dataset which is accurate to a resolution of under 90m depending on where you are in the world. When you think about it that is an amazing amount of data for the entire land mass of the earth but when you’re looking at hairpins on a steep sided mountain the elevation errors can begin to mount up. Tunnels are another way for extra elevation to creep in as the profile thinks you travelled over the mountain rather than through it. So the estimate for the route from this dataset is around 1,000m too much but given the elevation data available to work with that is to be expected. (Note: this would also be the elevation total provided if you uploaded to Strava using a non-barometric device).

Comparison of recordings

Those that watched the stage (and it was a good one) would have seen that on there was rain over the first two climbs but then the sun came out for most of the rest of the stage. A tiny bit of snow near the summit of the Mortirolo but that is less likely to affect the barometers than the rain.

Looking on Strava we have 12 Pro riders (although I may have missed some) that have uploaded their rides using an array of GPS devices. Here are their profiles from the highest recorded elevation down:

Gianfranco Zilioli – PowerTap Joule GPS+

Jussi Veikkanen – Garmin Edge 500

Iljo Keisse – Garmin Edge 1000

Hugo Houle – Garmin Edge 500

Nathan Brown – Garmin Edge 1000

Marcus Burghardt – SRM PC8

Grega Bole – Garmin Edge 500

Martijn Keizer – Pioneer

Davide Villella – Garmin Edge 1000

Visconti Giovanni – Garmin Edge 510

Maarten Tjallingii – Pioneer

Chad Haga – Pioneer

Conclusion

3 of the devices were pretty much spot on but 9 out of the 12 recordings struggled to cope with the rain near the beginning of the stage with the Pioneer head units suffering the worst. There is basically nothing that Strava can do to attempt to correct this data apart form allowing the rider to override their elevation stream with the SRTM data which they already offer. Hugo Houle’s Garmin Edge 500 had him going below sea level at one point as well despite the lowest elevation being more like 400m. So why do we have such a discrepancy?

The more expensive GPS devices include barometers that require an initial “zeroing” for the elevation of the starting point followed by keeping a log of the change in barometric pressure as you go about your ride. This initial zeroing is performed either by a known, pre-set height for a location or calculated from satellite data although the margin for error vertically is far higher than horizontally. Hugo probably was a little rushed and hit the start button before his 500 had chance to calculate his initial elevation and so his entire ride’s elevation data was off by that amount, although that doesn’t affect the total amount climbed.

For all the clever technology and software processing the common flaw in many of these devices is that the barometer requires a small hole in the casing that allows the changes of air pressure to be measured by the barometer. If rain manages to get into that hole then the barometer will often completely fail to register changes until the water is cleared out by wind or evaporation. When that happens you get the big jumps in elevation as the barometer suddenly realises that you are actually much higher or lower than it thought.

I use a silicone case on my Garmin 800 which goes some way to prevent the water causing these errors but that isn’t always the best but you do wonder why the GPS device manufacturers don’t use waterproof barometers (like they have in the TomTom Multisport watch) as although we’d all wish it otherwise, we often do find ourselves on the receiving end of a bit of weather at times.