The evangelists for the Global Positioning System (GPS) are doing their job well. Consumers are becoming increasingly aware of the potential benefits of knowing exactly where they are. In fact, GPS usage has become so pervasive in the last decade that even technophobes can't avoid the wave of spatial pinpointing that includes in-dash car navigation systems, the Coke GPS campaign, child locators, pest control, fleet management, bus route planning, and more. Even if you aren't directly using GPS it is likely that spatial systems have already indirectly touched your life for the better.
What does this mean for the handheld developer? It means that there is no better time than the present to add a little GPS to your daily development diet. However, before you get started, there are a few things that you should know: some “good news†and some “food for thought.â€
The good news: GPS provides accurate time and position information anywhere in the world and in just about any kind of weather. It is a powerful tool by itself, and when mixed with the potential of handheld devices, creates an entirely new dimension in application development.
Food for thought: Understanding some of the finer points of designing software around GPS isn't easy and requires some practical knowledge. For developers and end users alike, the reality of effectively leveraging GPS boils down to what I affectionately refer to as “the three A's,†accuracy, availability and applications.
Accuracy
GPS is a sophisticated satellite-based radio navigation system that uses 3D multilateration (not triangulation) to resolve earthbound receiver positions into latitude, longitude, and altitude.
The GPS receiver calculates a position (more commonly referred to as a solution), by capturing timing signals sent from multiple satellites and calculating potential intersection points based on a simple formula: Signal velocity times travel time equals distance.
Unfortunately, the solution is only an approximation due to the following factors:
It is important to note that signal interference can be minimized with better quality receivers, but never entirely eliminated. GPS hardware, or rather the chip sets that receive GPS signals, are not created equal—more on this later.
Let's skip back to WAAS for a moment. Wide Area Augmentations System (WAAS) uses specialized satellites and ground stations that, over time, correct the effect of signal detours, and broadcast the corrected data to WAAS-enabled receivers for more accurate solutions. Local Area Augmentation Systems (LAAS) use similar technology, but aim for a much higher degree of accuracy—to within a centimeter or so! Greater accuracy does have a price tag, and is used only in applications that require extreme precision such as airplane navigation and land surveys. A detailed treatment of Differential GPS Systems (DGPS) is beyond the scope of this article, but is fascinating. For more information on this see http://www.esri.com/news/arcuser/0103/differential1of2.html.
Accuracy is an important issue in developing any application that is spatially aware. In fact, it is a good idea to make sure that your requirements document includes a section on accuracy that details expected accuracy ranges, hardware requirements, and what the software will do when solutions fall off the radar.
Availability
GPS is a line-of-sight technology, which means that anything between the receiver on the ground and the satellites circling the Earth reduces or can potentially block the signal. Manufacturers of GPS chip sets go to a great deal of trouble to mitigate availability issues in hardware and software. However, it is critical that the developer understands that the most common solutions to GPS availability problems usually reside with the end user: