Why do I see discrepancies in elevation between a planned route and a recorded ride?
Rides and routes are fundamentally different from each other, and they differ slightly in how elevation is calculated:
When you plan a route on the website, the elevation used comes from a data set that was taken during a shuttle mission in the early 2000’s, where the shuttle orbited the earth and scanned the surface using radar, to estimate elevation. The resulting elevation dataset is a grid with 90 meter spacing between points, and for each point in a route planned using our software, we lookup the elevation using this dataset. We do a little math to enhance the accuracy of the estimate by interpolating between points. For example, if the point falls in the middle of a cell in the elevation dataset, we interpolate between neighboring points to estimate the elevation at that point. We have a couple higher precision datasets in specific areas that we use instead of SRTM where available, but the majority of routes planned outside of the United States use the SRTM dataset.
When you are recording a ride on a device, it uses either GPS derived elevation (poor accuracy) or barometrically measured elevation (high accuracy, but can be off due to calibration issues). In order to calculate the gain and loss figures, we perform some smoothing of the data to attempt to minimize error accumulation, and then sum the elevation delta from point to point. To use an example to illustrate why we have to smooth the data: imagine you are riding on a perfectly flat route, and using a Garmin with a barometric pressure based altimeter. That altimeter has some amount of error in it, so every couple of points it returns a value different from the previous point, usually in multiples of the sensor’s resolution. If we naively just added up all the elevation deltas from point to point, we’d have a ride that has a claimed gain and loss of thousands of feet even though it’s a perfectly flat route. To avoid this, we smooth out this error using some techniques used in signal processing. It’s not perfect, and yields slightly different results depending on how big the error is (GPS vs barometric pressure, different brand sensors, etc) and how frequently the points are logged. Our techniques are consistently within 10% of what a barometric pressure based Garmin unit will state for elevation gain and loss, and recorded rides are consistently within 10% of the elevation our route planner states it will be. There are deviations from this depending on the quality of the elevation datasets (city vs forest vs flat plains, etc), which are unfortunately unavoidable. We have tried many different methods of calculation over the years, and all that happens is that we make one type of data more “accurate” and another type less. “Accurate” is in quotes, because it’s relative to a specific brand of sensor and a specific algorithm used by a specific piece of software, and some people think Garmin is the source of truth, others Strava, others Ride with GPS, others still Wahoo. The truth is that each is an estimate using assumptions, which take into account tradeoffs. We feel the important thing to be is consistent – if you plan a route with our software, and you see 3500 feet of elevation gain, when you ride the route you know what to expect. If someone else says it’s 4500 feet, and another says it’s 3000 feet, it doesn’t matter, because the important thing is that you can estimate the difficulty of a planned route, and know what it will feel like to ride it.
Using the replace elevations feature on a recorded ride can help in some cases, where the ride was recorded with a GPS unit or phone that does not have a high accuracy barometric pressure altimeter. Our elevation datasets are generally speaking better than GPS derived elevation, and generally are worse than barometric pressure derived elevations. This feature replaces the rides recorded elevation values with values derived from the datasets. This can still result in issues, usually due to GPS drift, or when passing over a bridge or through a tunnel. Most people have seen this on occasion – a GPS unit or mobile phone records a line that drifts from the road on a map. Sometimes this drift can look erratic, depending on how poor of a signal the GPS unit received. If this happens while you are riding through the hills where the road traverses a slope, you can see large errors in calculated elevation gain and loss. This is because the GPS point has you off the side of the road by 50 or 100 feet on occasion, which in the case of a road on a scenic hill means the elevation point sampled from our datasets is either down or up the slope!
GPS is highly accurate in the horizontal plane, but very poor in the vertical. This is due to the angle between the line of site to the various GPS satellites, and the ground. Small errors result in big differences in height, but not big differences in location on the earth. As such, a barometric sensor is going to give you the best elevation measurement; using the replace elevation feature follows closely behind the barometer measurements, and GPS derived elevation pulls up the rear. There are some factors that can affect barometric pressure, like an incoming storm or entering a building or riding through an inversion. These conditions don’t usually cause large errors from point to point, but usually make the whole ride shift up or down in elevation.
Why do I see discrepancies in elevation between my Garmin unit and the Ride with GPS mobile app?
There are a few factors that contribute to differences in elevation calculations between devices: logging frequency, data collection method, and the software itself.
- Logging frequency. With most GPS recording devices you can choose how often the device logs a data point. The more frequent the data point collection is set to, the more data points that will be collected, which inherently increases the changes in elevation. Ride with GPS is set to 2 seconds by default, and you can manage this frequency through the app settings (https://ridewithgps.com/help/manage-app-settings#logging). Increasing the logging frequency from 2 seconds to 1 second, effectively doubles the number of data point recorded.
- Data collection method. Many GPS units have a barometric pressure sensor, and this sensor is becoming more common on new smartphones. If you are not using a barometric pressure sensor while recording your ride, then you are likely using GPS derived elevation, which is much less accurate. If you have a barometric sensor on your phone, you can toggle it on from the app settings (https://ridewithgps.com/help/manage-app-settings#bluetoothsensors). There are a few factors that affect barometric pressure, like an incoming storm or entering a building or riding through an inversion, but overall you are going to get more accurate elevation than GPS derived elevation, which uses triangulation from satellites that are miles away to determine incremental changes in elevation.
- Software. The data that is collected while recording is first processed on the device, whether that be your Garmin unit or smartphone. GPS is a messy data stream (https://ridewithgps.com/help/why-is-my-gps-data-sometimes-wrong) so the device you are recording with utilizes an algorithm in the software to filter out bad data points. This algorithm process the data and removes outlier points to give you normalized data. Each algorithm has varying levels of thresholds and tolerances for bad data points, and these variations filter out different data points, so the end result is different. The elevation differences between software algorithms should be no more than 10% in either direction.