I'm looking for the appropriate theoretical framework or speciality to help me deal with understanding how to deal with the errors that the GPS system has - especially when dealing with routes.

Fundamentally, I'm looking for the requirements on the data and any algorithms to use to be able to establish the length of a trail. The answer needs to be trustworthy.

A friend of mine was the race director of a race which was billed as 160km but the Garmin watches everybody has makes it more like 190km+. It caused quite some grief at the finish line, let me tell you!

So my friend went back to the course with various GPS devices in order to remap it and the results are interesting.

Using a handheld Garmin Oregon 300 she got 33.7km for one leg. For the same leg on a wrist watch Garmin Forerunner 310xt it came out to 38.3km.

When I got the data from the Oregon it was obvious that it was only recording data every 90 seconds or so. The Forerunner does it every couple of seconds.

When I plotted the data from the Oregon I could see that it got confused by some switchbacks and put a line straight through them and a curve was made a little less.

However, I muse that the difference in the recording frequency is much of the explanation. i.e. by recording every couple of seconds the Forerunner is closer to the real route. However, there will be an amount of error because of the way GPS works. If the points recorded are spread around the real route randomly (because of the error) then the total distance will be larger than the real route. (A wiggle line going either side of a straight line is longer than the straight line).

So, my questions: 1. Are there any techniques I can use on a single dataset to reduce the error in a valid way? 2. Does my theory about the difference in recording frequency hold water? 3. If I have multiple recordings of the same routes are there any valid techniques to combine them to get closer to the real route?

As I say, I don't really know what to search for to find any useful science about this. I'm looking for ways to establish just how long a given piece of trail is and it is very important to people. An extra 30km in a race is an extra 5+ hours we weren't expecting.

Thanks for any advice you can give.


2 Answers 2


One issue might be the number of satellites.

Some formats - such as NMEA as described here - include a number of satellites record for each point.

With that information you could remove points where satellite coverage is poor, as being potentially unreliable. NMEA also includes a Horizontal Dilution of Precision (HDOP) value which you can also use to filter out poor quality readings.

As an addition to the above:

To be honest the disparity between results does seem awfully high on reflection. You're talking about a 20% difference and that's quite the gap.

Two thoughts:

1) Are these distances coming straight from the GPS? I would worry that the two GPS are using different coordinate systems. eg measuring a line in a state plane coordsys gives a different value to UTM. Can you somehow check that?

2) Can you trace the route in Google Earth, and measure it that way? Not saying that would be perfect, but it would - hopefully - be a close match to one of the GPS and help uncover why the two are so different.

Personally, to merge multiple routes I'd create a solution in FME; but then I have it on my computer because I work for the company!

  • Good idea, however, the base data comes from Garmin devices and is normally in TCX format. While it's probably possible to go down several layers and get the raw NMEA data (assuming the device stores that) it won't help when users only have TCX or GPX data.
    – Sarge
    Commented Sep 9, 2010 at 1:14
  • But how do you "remove" points, exactly? When a point is the unique indicator of a loop in a trail, for example, removing it could be far worse than keeping it.
    – whuber
    Commented Sep 9, 2010 at 22:47
  • This is true. But really the two obvious problems with such point data are too few points, and poor quality points. Increasing the frequency of points is one solution, but unless you have a way to throw away bad data you could always have zig-zags in the route. Commented Sep 10, 2010 at 16:15
  • I've had a chance to review 3 devices: 2 of the handhelds and the wristwatch. Although I wasn't specifically checking for the co-ordinate system they're all using WGS84. Yes we have imported the data and the tracks do line up. You can clearly see places where they diverge a little but they're still in the same place. The questions in the Stats StackExchange has more detail.
    – Sarge
    Commented Sep 13, 2010 at 2:49

Here's how I would go about this problem, some of my suggestions may not be practicable, but if they aren't just say so in a comment.

I agree with whuber on the stats forum, and the zig-zagging error due to the high frequency of sampling of the one device seems unlikely to me to cause that large a discrepancy in the distance (How fast were you traveling?). Also I'm a bit confused about the switch backs statement, does this mean you did not take samples from one machine during a curve or whatever a switchback is?

First, if available, I would assess the accuracy of the readings overlayed with aerial imagery. Even if only some of the path is visible, it will be insightful to see the error from either GPS unit. It may also provide another means in which to estimate the route length.

Two, I see no benefit of taking readings from multiple machines. They are entirely redundant, and any differences are due to various errors which you won't be able to distinguish. If you are worried about accuracy, you simply need to take more time plotting the route and obtain multiple readings from the same location. This is essentially what you are doing with two machines, although because the samples are not taken at the same space/time point, it becomes difficult to interpolate them, and you do not know if the difference is due to when/where samples were taken between the two machines or due to satellite errors (I have no idea if satellite errors would be expected to be the same between machines, although the comment of auto-correlated errors on the stats forum suggests they might be).

Honestly I believe your time would be better spent improving the accuracy of your plot as opposed to merging the two routes together in any way. I know this could be alot of work to simply find the correct length considering your path is quite long. If you overlay the points of the device that recorded more frequently on satellite imagery and find them to be accurate, I see no problem with just using those readings. You gain what seems to me a trivial amount of information from using the other machines readings, and the added work to figure out how to use both of them together is not worth the time. If that is unsatisfactory for whatever reason, I would go back and plot the points again if you have the time. Take multiple readings at the same location, you can interpolate those readings, and use those interpolations for the vertices along your route. If you have to do this again in the future I would suggest this is the procedure you take the first time you are plotting your route.


  • 1
    Sage advice. As to point two: that is correct if the devices are carried at the same time. If they represent paths taken at different times, then they contain random error components that in principle can be cancelled. That's the prize: find a way to improve the polyline's accuracy through some sort of 2D averaging. A neat potential application would be to merge a zillion polylines created by users over a long period; the result could possibly be survey-grade accurate.
    – whuber
    Commented Sep 9, 2010 at 22:46
  • When it comes to increasing the accuracy by slowing down: unfortunately this data comes from runners and they don't slow down except when they have to. The comment that combining the data is difficult is appreciated though.
    – Sarge
    Commented Sep 13, 2010 at 2:50
  • 1
    I assume you wish to know the length of the path before the race is actually commenced, and so if you plot the course yourself you could take the time to take multiple readings. You may find though just running the course and taking readings from the one machine that takes more frequent samples is sufficient for what you want to accomplish. While you may expect some variation between peoples different GPS units, your difference of over 4 kilometers is probably unacceptable.
    – Andy W
    Commented Sep 13, 2010 at 4:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.