It gets better

After more than three years I’ve finally updated my GPS maps. I found a blog post or other reference to GPSFileDepot which has many more and much better maps than MapCenter.

They have some really nice maps like this one from Moun10Bike which includes roads, trails, topo lines and more.

I downloaded and installed the maps and they then showed up in Garmin’s MapSource. The only tricky part was finding the ‘Make Map’ menu bar button which switched from browse mode to select-tiles-to-send-to-device mode.

One Map To Rule Them All

I recently found a great source for maps from every state: the OpenStreetMap. You can download any portion of their maps in .osm format, and they provide tools specifically for converting them to Garming .imgs! More details on the process at their wiki.

They’ve imported and done some cleaning on the entire US Census TIGER dataset as well as integrating user-contributed tracks. I downloaded the .osm for my state, ran java -jar mkgmap.jar map.osm, and ended up with a .img better than the ones I used to piece together myself, and in a fraction of the time as well.

OSMs for every state in the union are here or here. Enjoy!

Update: I’ve converted each of the .osm files into Garmin .img format. You can get them (with the exception of California, Texas, and Virginia, which were too large to convert) at Just download the .img of your choice, rename it to gmapsupp.img and place it in your Garmin directory on the GPSr, and you should have maps!

Latitude and Longitude Representations

Latitude and Longitude is usually reported in one of three formats, using degrees, degrees and minutes, or using degrees, minutes, and seconds. There are 60 seconds to a minute, and 60 minutes to a degree. Whichever of the formats is used, the smallest unit is often represented as a decimal.


47.89149246116762°, -121.65393948554993°

is the same as

47° 53.4895476700572′, -121° 39.2363691329958′

is the same as

47° 53′ 29.372860203432″, -121° 39′ 14.182147979748″.

To convert the decimal portion of degrees into minutes or the decimal portion of minutes into seconds, simply multiply the decimal portion by 60. To go up, divide by 60.

Update: I’ve written a little online converter here:

Washington Maps and GIS Data

One of the best sources of Washington map data is (surprisingly) Washington State Office of Financial Management.

WA OFM Geospatial Data
Some useful Census data (like water features), but as Windows self-extracting zip exe’s(!). I get the same md5sum’s “running” it under wine as I do by renaming the .exe to a .zip and unziping it.
has data for all of Washington State–satellite photos, .tiff topo maps, and DEMs.
Digital Ortho Quads (registerd gray-scale photos with 1-meter pixel size)
Digital Raster Graphics (scanned 7.5′ topo maps)
clipped Digital Raster Graphics (scanned 7.5′ topo maps without borders)
10-meter DEMs (by 7.5′ quad; look here for other formats)

KC GIS Center
Don’t bother looking here; these datasets are only available to County employees or on a $200+ DVD. The datasets are browseable through iMAP, but all you can get out of it is a screenshot.

GIS File Formats

Of course there’s no Open, widely adopted standard for map data. Here are dome of the file formats I’ve encountered:

Digital Elevation Models. “The USGS DEM standard is a geospatial file format developed by the United States Geological Survey for storing a digital elevation model (or surface elevation).”1

Digital Orthophoto Quads

Digital Raster Graphs. These can be viewed using the free version of ESRI’s ArcExplorer GIS.

an (ESRI) ArcInfo (aka ARC/INFO) interchange/export file.

.img files register as Garmin MapSource Map.

.mp files are for some reason called Polish Format, at least by the folks at GPSMapEdit and MapCenter.

.shp files register as ESRI shapefiles. This seems to be one of the more common formats.

TIGER/Line File
Topologically Integrated Geographic Encoding and Referencing, or TIGER, or TIGER/Line is a format used by the United States Census Bureau to describe land attributes such as roads, buildings, rivers, and lakes.2

Florida Maps and GIS Data

Florida has all kinds of great data available. The two sites I’ve been working with are

FDOT has many different Road and Road Data datasets, but unfortunately most of them do not contain street names, only road ID numbers.

The “Roads with Local Names” dataset includes street names for 14599 roads statewide, but does not contain neighborhood streets.

FGLD has USGS 1:24k road maps, but they too forgot to include the street names.

FGLD also has TIGER maps at 1:100k; they’re newer, and include the street names. Both the TIGER and USGS road maps must be downloaded on a county-by-county basis.

FGLD even has numerous line and polygon hydrographic maps. I got to these by clicking ‘download’ on the TIGER road map and then changing the Data Layer.

Unfortuneatly, all the FGLD maps use the Albers Conical Equal Area projection, which GPSMapEdit can’t read. MapWindow GIS can–but I haven’t figured out how to export anything from that program yet.

Utah Maps and GIS Data

The Utah Department of Transportation’s GIS site is pretty bare.

The Utah Automated Geographic Reference Center has a Geographic Information Database which has all kinds of old data, broken links, and, buried in it’s depths:


Note: Most data contained within the SGID uses the Universal Transverse Mercator projected coordinate system (UTM Zone 12 North) using the 1927 North American Datum (NAD83). UTM Zone 12N, NAD 27 is the current state standard for projection, coordinate system, and datum.

GIS Coordinate Systems

From just playing around with GPSMapEdit I was able to figure out most of the shape file import options. Sometimes, however, I’d open a shape file and be confronted with a big red square, a mass of tangled lines at such a scale that it was impossible to view the entire mess at once.

I never did figure out what the “Coordinate system” and “datum” dropdowns on the 3rd step of the file import were for. I used to just choose different values at random until my maps seemed to line up. Turns out they are what determine not only whether your maps line up but also whether you get anything that resembles a map at all.

The Florida Department of Transportation GIS Data Directory has a wealth of data, and below each of the section headings their site says: Projection: UTM 17; Datum: NAD 83. Sure enough, there’s a UTM coordinate system defined in GPSMapEdit, and a Zone dropdown that lets you choose 17, and NAD 83 just so happens to be one of the available Datum’s.

This inspired me to find out what these things really mean.

“Projection is a fundamental component of map making. A projection is a mathematical means of transferring information from a model of the Earth, which represents a three-dimensional curved surface, to a two-dimensional medium–paper or a computer screen. Different projections are used for different types of maps because each projection particularly suits certain uses. For example, a projection that accurately represents the shapes of the continents will distort their relative sizes.”1 Wikipedia, not surprisingly, has an entire article devoted to different types of map projections.

The National Geodetic Glossary defines datum in general as “Any quantity or set of such quantities that may serve as a referent or basis for calculation of other quantities” and specifically relating to things geodetic as “A set of constants specifying the coordinate system used for geodetic control, i.e., for calculating coordinates of points on the Earth.”2

Specifically, “The North American Datum of 1983 (NAD 83) is ‘The horizontal control datum for the United States, Canada, Mexico, and Central America, based on a geocentric origin and the Geodetic Reference System 1980. This datum, designated as NAD 83, is the new geodetic reference system. … NAD 83 is based on the adjustment of 250,000 points including 600 satellite Doppler stations which constrain the system to a geocentric origin.’ (Geodetic Glossary, p 57)”3

WGS 84 is the World Geodetic System frame of reference.

So depending on what part of the world you’re mapping, and how you expect the map to be used, you may choose to encode the map using different projections and datums. When using maps made by other people, it helps to know what coordinate systems they used. To turn the red blob into a map, I just had to change coordinate systems. The map projection and coordinate system information should be in the map metadata file.

A Geocaching HOWTO: Maps

After I finally sprang for a GPS unit I was a little disappointed to fully realize that they wanted me to pay another $200 for the maps. There has to be a better way, I thought…

These notes are for my Garmin GPSmap 60CSx.

Here’s what I’ve done so far:

Get some maps
I found a nice map of all the Washington roads at MapCenter. The binary IMG file is directly Garmin GPS compatible. (There’s two roadmaps for Washington, one from 2005-09-19 and one from 2006-03-04.) Another good Washington source is (oddly enough) the Washington State Office of Financial Management. More map sources are listed below.

Create a Garmin .img map from a .shp shapefile

  • Get a shape file and open it in GPSMapEdit.
  • File -> Save Map As… (Save as type: Polish format (*.mp, *.txt))
  • File -> Export -> Garmin IMG / cgpsmapper.exe (Save as type: Garmin MapSource map (*.img))
  • Enter the path to cGPSmapper.exe
  • Run (this may take awhile.. like 1 hour)
  • On my first try I got “Error E024: Top layer detail level too high to cover entire map – decrease detail level of the less detail layer (use higher Level#).” Let’s try adding another layer..
  • File -> Mp Properties -> Levels -> (highlight Level1) -> Insert Before
    (highlight Level1) -> Change… -> Bits -> 18 -> MapSource zoom range -> 3 (these are complete guesses)
  • That didn’t work.. let’s try bits 20 and range 2… ok!
  • Verified GPSr viewable after manual copy+rename to microSD card.

More info on E024
From the documentation (get it fresh here):

E024 Top layer detail level too high to cover entire map – decrease detail level of the less detail layer (use higher Level#).

This error needs a little more explanation since it is often a source of confusion.

The last layer (the empty one) must always have one ‘tre region’. The maximum size of this region is 65535/2 * resolution (grid). If the map covers a large area, the selected grid may be too low to allow the desired ‘tre region’ to be created.

The maximum size of any object strictly depends on the bit resolution. For resolution 24, the maximum size 1.5 metre * 65535. Similarly, for resolution 23, the maximum size 3 meter * 65535. This means that if the object is too big to fit into the given layer of the map, the bit resolution of this layer needs to be decreased so the layer can accept bigger objects.

Combine multiple .img files into one gmapsupp.img

  • Run sendMap20 (rev 3.5)
  • “Add maps” to get all your .img’s listed
  • Hit “Create GMAPSUPP.IMG”
  • Copy GMAPSUPP.IMG onto your microSD
  • And you get nothing… This isn’t quite working yet…
  • Instead of creating a gmapsupp.img, let’s just hit “Upload maps to GPS”
  • That ends up with nothing as well..

So what I ended up doing was opening each map in GPSMapEdit (using File -> Add…), saving the whole thing as a .mp, and exporting that to a .img using cGPSmapper’s online compiler (when I tried to compile it on my computer I got “Error: Access violation at 0x00417C2C (tried to write to 0×00000000), program terminated.\\”). The finished product is Washington Roads and Waterways 2.

Upload your maps to the GPS unit
I was unable to open my MapCenter IMG with Garmin’s MapSource program. Instead I used sendMap (Version 2.8). Click “Add maps” and then “Upload selected maps to GPS”. Be careful with this, it looks like it could easily delete the existing basemaps.

Or you can copy the map onto your device manually. The GPSr expects to find a file called gmapsupp.img inside a folder called Garmin on the microSD card. Just copying a .img with a different filename onto the MicroSD card won’t work, but if you copy a .img onto the MicroSD card and rename it gmapsupp.img, the GPSr will see it. To access my microSD card directly I hit menu -> menu -> setup -> interface -> USB Mass Storage on the GPSr. Although creating or replacing your gmapsupp.img file should in no way affect your basemaps, remember to take a backup of your old gmapsupp.img files before overwriting.

Even if you want to upload multiple maps, they all need to be bundled into one gmapsupp.img


GPSMapEdit (Windows; shareware)
Allows you to open and overlay multiple maps simultaneously. Supports using cGPSmapper to create Garmin-compatible maps.

When importing each map you need choose the color of the imported features along with which field to use as the name display on the map.

Not seeing what you expected? Try View -> Levels. Each level represents a different set of zoom levels on your GPSr. You have to be careful about the level when combining maps. You don’t want to put too much detail at too high a level, or your map will become too crowded. You might want to add major cities to levels 1 and 2, for example, but smaller cities only to level 0. Once while combining maps I ended up with an extra empty level inserted, which was easily removed. Levels are modified through File -> Map Properties -> Levels.

There doesn’t seem to be a way to really specify the exact destination coordinates of files you add. When combining data from different sources, this can result in your maps not aligning correctly. The only way to change the “Target bounding rectangle” during an import is with the “Datum” dropdown. I have no idea where this list is populated from or what the different values mean (many of which resemble foreign country names?), but they all land your map in about the right location. To get really exact I had to use GPSMapEdit’s Transform feature to adjust the original maps individually before importing. A couple maps I have tried to open had bogus numbers in the “Bounding rectange in source units”; I haven’t found any way to salvage these maps. (Update: I’ve figured some of this out here.)

So far I’ve had success opening MapCenter IMG’s and .shp files. Even though .shp doesn’t show up on GPSMapEdit’s list of “All supported files”, GPSMapEdit has no problem with these. Actually, when working with an existing multi-level map, if you add a single-level .mp, it will only add the single level. If you add a single-level .shp map, it will extrapolate the existing level into the higher level at appropriate levels of detail–very nice! So remember, open you multi-level maps first, and then add your single-level maps.

cGpsMapper (Windows, Linux, on-line; free, shareware, comercial)
Compiles Polish format files into Garmin IMG files. Integrates with GPSMapEdit. After running over an hour compiling a map, I got “Error: Access violation at 0x00417C2C (tried to write to 0×00000000), program terminated.” Fortunately, cGpsMapper also hosts MapCenter, which allows you to upload Polish files and they will compile them for you. MapCenter was able to successfully compile the map that crashed cGpsMapper on my system. Plus, it can save you a couple hours of CPU time. The catch is that then the maps become publicly available, which for me isn’t a bad thing at all.

The instructions are a little vague: to upload you own maps save your .mp as (lowercase), zip it, create an account, and then just fill out the “Add new map” form. Large maps can take a couple of days to show up, depending on the load. You’ll know your map is ready when a “[build log]” link shows up under your map. If there’s a “[binary IMG - xxk]” link as well, your map compiled successfully. If not, check the log to see what went wrong.

These are the same folks who make sendMap available. Note that has been updated more recently than


“ArcExplorer is a lightweight GIS data viewer written in Java that is used to perform basic GIS functions (e.g., view, navigate, and query). It is a downloadable application that operates in a stand-alone environment and does not need to connect to a server. ArcExplorer is heavily used in the education world and runs on both Windows and Apple Macintosh computers.” And Linux! Great viewer, but you can’t save maps as anything other than ArcXML or JPG.

Here’s what I’m still playing with:

The National Map
“The National Map Viewer currently supports download of vector (line-based) features and raster (image-based) data where available…. Datasets will be clipped to the current viewer map extent.” This creates ESRI shapefiles.

GPS TrackMaker
Another map editor. They include basemaps which are at least as good if not better than the included Garmin basemaps. Can convert maps between a few different formats.

Online shape file viewer.

“The MapWindow application is a free, extensible, geographic information system (GIS).”

“Convert GPS or GPX file to ESRI Shape file”.

Washington map sources have moved here.

File format notes have moved here.

A Geocaching HOWTO: Waypoints

Now that I finally have a GPS receiver, I want to get out and use it!

My current workflow for getting caches onto the GPSr is to use GeoToad to search for caches and generate a GPX file, which I send it to the GPSr using GPSBabel or EasyGPS. CMConvert takes the GPX file and creates a PDB file; J-Pilot uploads the PDB onto my Palm, where with CacheMate I have all the descriptions, logs, and other cache goodness at my fingertips.

  • GeoToad: geotoad.rb
  • GPSBabel wrapper: filename.gpx
  • CMConvert: cmconvert -d -C -L -O -S -N 15 filename.gpx
  • J-Pilot: jpilot

To enter waypoints manually, I find the Marengo GPS Route Planner helpful. Just copy the generated XML and save it as a .gpx file, and use your favorite transfer utility to get it to your GPSr. Even if I’m not planning on using the waypoints as a route per se, it serve as a convent grouping mechanism.

Software I’ve groked:

(Linux/MacOS/Windows) Runs queries against for caches, with all kinds of filtering options. Output is an XML-style GPX file. A simple query can generate hundreds of caches–give it a few hours to run. Also

(Windows) “EasyGPS is the fast and easy way to transfer waypoints, routes, and tracks between your computer and your Garmin, Magellan, or Lowrance GPS.” Reads in GeoToad GPX files.

(PalmOS) Neatly stores everything about a cache on your Palm. Has the ability to decrypt hints at the touch of a button. I used to think this was good.. but maybe it’s not :). Free trial version holds 10 caches; full version is a reasonable $8. smittyware also makes available a little app called CMConvert to send gpx files to your Palm (./configure; make; sudo make install; man cmconvert). To create Palm-importable pdb files: cmconvert -d -C -L -O -S -N 15 filename.gpx.

(Linux) “J-Pilot is a desktop organizer application for PalmOS devices. It is meant to be an alternative to the Palm Desktop for those who run the most popular Operating Systems in the World, Linux and Unix.” This is for CacheMate, as mentioned above. To get it talking to my old Palm Vx I think all I had to do was fill in the Serial Port under File -> Preferences -> Settings (/dev/ttyS0 in my case) and up the Serial Rate. This was after spending a few hours unsuccessfully trying to sync a Handspring Visor, so I don’t know what collateral damage that caused.

(Linux/MacOS/Windows) “GPS file conversion plus transfer to/from GPS units.”
If the kernel-included garmin_gps driver isn’t working for you, try this. This uploads a .gpx to my GPSr: gpsbabel -s -i gpx -f file.gpx -o garmin -F usb:. Martyn C Davis has released a simple wrapper around GPSBabel for uploading gpx tracks; it is easily extendable. I had to sudo apt-get install libusb-dev before building to get GPSBabel to talk to my USB port.
(BUT: can GPSBabel replace CMConvert by creating something CacheMate can read???)

Software I’m still figuring out:

GSAK (Geocaching Swiss Army Knife)
(Windows) Seems pretty popular. $25 to remove nag screen after 21 day trial. Looks like it does not query for caches; it only loads .gpx/.loc files. Does export to CacheMate (probably through GPSBabel… mag_pdb?).

sudo apt-get install gpsman gpsmanshp libtk-img

sudo apt-get install gpstrans
Doesn’t appear to support USB connection?

Other software:

Appears to be the same thing as GeoToad. The screenshot looks nice, but the latest version (0.9.4) is dated Oct 20, 2003.

powered by WordPress     themed by Mukkamu     presented by     everything else by steve hulet