written by Dave aka Team Landshark
The position inaccuracy comes from the way GPS positions are computed. Your GPSr receives signals from the satellites, and measures the length of time it took for the signal to travel from the satellite to the GPSr. It then multiplies by the speed of light to compute the distance between you and the satellite. In the physics world we call this a "time of flight" system. The GPSr does this for all satellites it can "see."
In order to make use of this information, the GPSr needs to know where each satellite was located when it transmitted the data. To do this, each satellite transmits some information about its current orbit. This is called "ephemeris" data. The ephemeris data is transmitted by the satellite only once in a while…IIRC it's about once every 90 seconds. When you turn on your GPSr and it says "looking for satellites," mostly what it is doing is waiting for the ephemeris updates to roll in. The GPSr "sees" the satellites almost immediately, but without the ephemeris data it doesn't know where the satellites are, so it's helpless. On my Oregon 450, the "satellite view" shows a signal strength bar for each satellite the GPSr can see; the solid bars are ones where the unit has received the ephemeris update, while the ones filled in white are ones with no update yet. The reason it can take some GPSrs "forever" to lock in is that if the ephemeris update is garbled due to weak signal, the GPSr has to wait for the satellite to transmit it again. For marginal signals, this process can take a long time to complete. Also FYI, I think newer GPS units have some way of modeling the evolution of ephemeris data, so if you turn off your GPSr for ~a few hours, it "locks in" much faster when you turn it back on. However, if you wait too long (a day or more) or if you get on a plane and go to a completely new location, the ephemeris evolution model breaks down and it has to go back to waiting for ephemeris updates the old-fashioned way.
OK, so now the GPSr knows where all of its satellites are located. It can compute time of flight and thus distance to the satellites. It's a simple matter to solve for the spot where all the distances converge. That is, you want the place in 3-D space where gives you the right distance to all of the satellites.
So where does the error come from? Simple: remember that we multiplied the time of flight by speed of light to get the distance? Well, this is just an approximation. The speed of light is not a constant when you change materials; it depends (mostly) on matter density. Denser materials have slower speed of light. Those clouds overhead? They make light go slower. Those tree leaves overhead? Same thing. Moist air? Same thing. You also get "multi-path" effects, which is the signal bouncing off a building and taking a longer path to get to you. All of this contributes to an error in the estimated distance ***for each satellite***, and a different one for each satellite, at that. So when you go to make that computation of "where do I need to be to make all of these distances work out?", you can't get it exactly right. If there were no such speed-of-light effects, the position accuracy of GPS would be under a foot.
Oh, one more thing to mention. The GPSr can't actually compute the time of flight until the end of this exercise, because while it knows what time the satellite transmitted its signal, the GPSr doesn't know what time it is locally. The computation that gives the position *also* gives the local time. It's all one big hairy computation. The math is ferocious. At the end of the process, the GPSr knows where it is, and also what time it is locally. This means that on average, your GPSr is the best clock you own — typical time accuracy is around 10-20 nanoseconds. FWIW one nanosecond is almost exactly one foot, so if your unit is reporting 15 foot position accuracy, you can assume that implies (roughly) 15 nanosecond time accuracy.
Now for the kids exercise. Start with 5-6 ropes, preferably around 10-15 feet long. Mark a spot on the ground with a rock, flag, whatever, and stretch out the ropes so all the ends meet at the rock/flag, but point them in different directions. Now cheat a little: pull a few of the ropes 8-12 inches away from the spot, and make few "overrun" the spot by the same distance.
Identify 5-6 kids (one for each rope) to be satellites. The rest of the kids are geocachers. Position one kid at the end of each rope. Have them pick up the rope end, and tell them that once they pick it up, they must remain in that spot until you tell them they can move again." Have all the satellites pull in their ropes completely.
Now pick your first geocacher, and give him the end of one of the ropes. Have him walk away from the satellite until it's slightly tight. Explain to the kids that the ropes represent the GPSr's estimate of the distance to the satellite. You can explain about the time of flight thing if you want to, but younger kids probably won't get it.
Tell that first kid that he could be any place on earth that is that same distance from the satellite. Where is he? You may need to prompt him to walk a circle around the satellite, but some kids get it instinctively. Answer: he could be anywhere on that circle. Not very useful. But what if we add a second satellite?
Set up a second kid the same way as the first, but with the rope from a different satellite. Explain that they could be any place that the two signals intersect, because we know the distance to TWO satellites know. Ask them to find the place. Most kids will figure out quickly that there are two such places. If not, help them find the second place.
Now add a third kid the same way as the first two, and ask them to find the location. This time, there is only one place. Point out that the place is not exactly on top of the rock. Why not? Because our estimate of the distance to the satellite is only that: an estimate. It has some error in it, and that error makes for an in where the computed position is. What's worse, with only three satellites, you can't even estimate how much of an error you made!
Add the other satellites, one by one, and repeat. Watch the error get smaller. After each addition, ask the kids to estimate how big a mistake is possible, not by looking at where the rock is, but by looking at how much the ropes overlap or don't touch. You'd be surprised at how good your average group of kids is at making this estimate.
That's it. The only thing left to point out is that they did this walking on the ground which is a 2D object, but the earth is a 3D object. That means you need one more satellite for everything. Four to get a basic position, 5 or more to be able to estimate accuracy.