With the growth of OpenStreetMap data has come a number of tools to help in creating custom Garmin vector maps from it.
mkgmap: Takes OSM map data (in .osm format), and converts it to the binary Garmin .img format. More complete feature set (from the website):
- Generates a map directly from a file saved from JOSM or from an extract of the main OSM planet file.
- Converts several .osm files in one run of the program to create a map tile set.
- Creates a .tdb file and an overview map that can be used to view the maps in MapSource or QLandkarte.
- Creates a gmapsupp.img file that can be copied directly to an SD card.
- Can also combine previously produced .img files into one gmapsupp.img file.
- Create a .tdb and overview map from previously produced .img files.
- The mapping between OSM features in the Garmin map can be customized.
- Transliteration of characters to ascii where possible to enable viewing on low end devices or for international maps.
- Character set can be specified for display on capable GPS devices.
- Control over the zoom levels that any feature appears at.
And to this list I can add several additional useful features:
- Java-based, so it’s multi-platform.
- Also compiles Polish Map format files (.mp), produced by programs like GPSMapEdit and GlobGPS. Maps compiled this way don’t have the ID/copyright “tag” included with the free version of cgpsmapper.
- Support for routing; now supports .osm and .mp input formats. An earlier post talks about a website that has free routable Garmin street maps created this way.
mkgmap GUIs: mkgmap is a command-line only program; a couple of programs add a simple GUI to make using it simpler. A few years ago, I wrote a simple GUI called mkgmapGUI, Windows-only, that lets you specify a .osm file and compile it into a Garmin .img file. There’s another one, also called mkgmapGUI, that’s a bit better behaved (e.g. doesn’t let you overwrite an existing file), and is Java-based so it’s multi-platform. Neither supports any of the command-line options available for more sophisticated uses; I hope to update mine in the near future so that it will support at least some of them.
CreateIMG: A package that combines a number of tools (including mkgmap), and semi-automates the process of creating a routable Garmin street map for any country. Just set the country in the CreateIMG.bat file, run it, and the data will be downloaded automatically and compiled into a routable map. Default country is Italy; see the ReadMe.txt file for instructions on how to change the country, and other useful info.
Tile splitter: Chops a large .osm data file into smaller chunks that meet the space limitations for Garmin vector map tiles.
osm2mp: If you want to work with OSM data in the Polish Map text (.mp) format used by GPSMapEdit and other programs, osm2mp is a Perl script that performs the conversion. But GPSMapEdit also lets you use the compiled .img format as an input, and programs like MapTk and GPSMapEdit++ can convert .img files to the .mp format.
OSM files often contain not just road data, but also locations for amenities like restaurants, parks, doctors, theaters, prisons, etc.; a full list is available here. These will be converted by mkgmap into points on the Garmin map, regardless of whether you want them or not. osmwrangler gives you the option of removing whichever amenity types you don’t want in your map, and generating a new OSM file without them that you can then run through mkgmap. Oddly enough, it’s only currently available in command-line format.
OSMgenerate produces OSM files consisting of a standard grid of POIs or polygons (lines are not yet supported), each with a unique tag/key combination. It also produces a mkgmap style file. By compiling the OSM file using mkgmap in combination with the style file, you can generate a Garmin map with a grid of POIs or polygons, each with a unique hexadecimal Garmin type code, so that you can see what POI or polygon corresponds to any given Garmin type code.
The associated website also includes some useful additional information on using mkgmap.
Tomorrow, a few more OSM tools, specifically more comprehensive (and flexible) map creators.