GPS pages

The art, science, and skills involved in figuring out just where you are on the planet have a long, complex, and fascinating history. Human seafaring history pushed the state of the art in several fields including astrodynamics and clock design. The "Global Positioning System" is the first that deserves the adjective "ultimate" as it gives nearly everyone the accuracy, cost, and ease of use that they will ever need to learn exactly where they are. (Software and hardware manufacturers still have room to claim several more "ultimates" vis-a-vis where you've been, where you're going, how to get there, etc.)

I wrote this in 2002 and included references to people who delved into early issues about GPS receivers and the authors valuable observations. Those links are all gone, but thank you Joe Mehaffey, Peter Bennett, and Sam Wormley for all that early knowledge you shared.

I did not include a new site that arrived soon afterwards, GPSBabel. It is free, open source software that converts between the (too many!) formats of GPS data and also takes data that is relatively easy to generate and convert it into whatever format your GPS system expects. Twenty years later it's still being updated by Roger Lipe and followers.

Despite being on the developer's Email list since its early days, I never had a good reason to use GPSBabel until 2021 when I got involved with monitoring properties with conservation easements held by the Ausbon Sargent Land Preservation Trust. I needed to create a file containing photograph locations and names distilled from monitoring walkthroughs. It was pretty easy to extract information from .gpx and .kml files with Unix tools like awk. For creating .gpx files to create maps on Gaia GPS, GPSBabel's flexible .csv to .gpx source -> destination function works great.

For example, I created this .csv file:

$ cat MLNA-2022_photo.csv
43.36706, -71.96718, 2022-10-05T19:21:35Z, 01-Entrance.jpg
43.36705, -71.96728, 2022-10-05T19:20:10Z, 01-Sign.jpg
43.36718, -71.96722, 2022-10-05T19:18:28Z, 01-Tree.jpg
43.36792, -71.96791, 2022-10-05T19:43:48Z, 01-Marker.jpg
43.36913, -71.96884, 2022-10-05T19:26:48Z, 03-Marker-big-rock.jpg
43.37123, -71.96631, 2022-10-05T19:49:33Z, 04-Marker.jpg
43.37224, -71.96656, 2022-10-05T19:55:31Z, SS-4x4-post.jpg
43.37228, -71.96713, 2022-10-05T20:01:57Z, SS-Shack.jpg
43.37390, -71.96688, 2022-10-05T20:15:54Z, 05-Marker-next-to-brook.jpg
43.37386, -71.96704, 2022-10-05T20:09:50Z, 05X-Extra-marker.jpg
43.37390, -71.96707, 2022-10-05T20:10:48Z, 05X-Debris.jpg
43.37376, -71.96716, 2022-10-05T20:10:48Z, 05X-Blue-tarp.jpg
43.37351, -71.96973, 2022-10-05T20:40:44Z, 06X-Extra-marker.jpg
43.37335, -71.97064, 2022-10-05T20:40:44Z, 06-Pipe.jpg
43.37424, -71.97049, 2022-10-05T20:44:36Z, 06-Big-pine.jpg
43.37506, -71.97038, 2022-10-05T20:49:28Z, 07-Felch-Rd.jpg
43.36771, -71.96861, 2022-10-23T15:23:36Z, 21.jpg
43.36992, -71.97069, 2022-10-23T15:42:27Z, 20.jpg
43.37091, -71.97128, 2022-10-23T15:48:08Z, 19.jpg
43.37135, -71.97218, 2022-10-23T15:51:25Z, 18.jpg
43.37155, -71.97240, 2022-10-23T15:52:54Z, 17.jpg
43.37277, -71.97315, 2022-10-23T15:58:17Z, 16.jpg
43.37267, -71.97408, 2022-10-23T16:01:55Z, 15-Landing.jpg
43.37369, -71.97373, 2022-10-23T16:11:04Z, 14.jpg
43.37407, -71.97414, 2022-10-23T16:13:47Z, 13-Downed-tree.jpg
43.37476, -71.97417, 2022-10-23T16:16:46Z, 12.jpg
43.37483, -71.97469, 2022-10-23T16:19:26Z, 11.jpg
43.37517, -71.97493, 2022-10-23T16:21:03Z, 10.jpg
43.37550, -71.97506, 2022-10-23T16:22:34Z, 09.jpg
43.37590, -71.97476, 2022-10-23T16:25:48Z, 08-Felch-Rd.jpg
43.37508, -71.97059, 2022-10-23T16:39:22Z, 07-Felch-Rd.jpg

And this file, which was also used for some track data:

$ cat gaia.style 
# gpsbabel style file
# This attempts to list time stamps on xcsv output.
# GaiaGPS generates280.4342041015625

FIELD_DELIMITER         COMMASPACE
RECORD_DELIMITER        NEWLINE
BADCHARS                COMMA

IFIELD  LAT_DECIMAL, "", "%08.5f"
IFIELD  LON_DECIMAL, "", "%08.5f"
IFIELD ISO_TIME,"","%s"
IFIELD  DESCRIPTION, "Trk", "%s"

OFIELD  LAT_DECIMAL, "", "%08.5f"
OFIELD  LON_DECIMAL, "", "%08.5f"
OFIELD LOCAL_TIME,"","%H%M"
OFIELD ALT_FEET,"","%4.0f"
OFIELD  DESCRIPTION, "Trk", "%s"
# OFIELD CONSTANT, "", "\n\n"

Then this command created a .gpx for a map key that I added to a Gaia GPS map with property boundaries, walking tracks, and (oops) some older waypoints:

$ gpsbabel -i  xcsv,style=gaia.style -f $to_file.csv -o gpx -F $to_file.gpx

The final result is at


While I deleted all the old, failing links from this page, I'm reluctant to discard my old HTML. Don't bother reading this 2002 page where I saved my observations unless you're a historian looking at what constitutes not quite ancient history about end user GPS receivers.

And what the heck. It appears that I never uploaded the Garmin protocol document that William Soley and I put together before Garmin finally published it. The old uploads appear to be gone, so now it's here. It has some updates from other folks too.

Oh! - Joe Mehaffey's page does live on at http://gpsinformation.net/, but doesn't appear to have been updated since 2015.

Perhaps I should add some text and links referring to the origins of GPS and what we used before. That would be more interesting.


Contact Ric Werme or return to his home page.

Last updated 2022 Dec 31, first written 2002 June 22.