OpenStreetMap

utack's Diary

Recent diary entries

Preparing a map for the Garmin nüvi 205t

Posted by utack on 8 February 2016 in English. Last updated on 24 October 2016.

In search for a dedicated car-GPS, 15€ for a used Garmin nüvi 205t seemed like a steal.
Garmin 205 There is a lot of documentation how to get map data running on Garmin devices, but the maps made by Computerteddy and frikart.no were not playing too nicely with this device. (Update: Computerteddy should work now)
From the beginning:
First concern: Will it read a 32GB microSD. Oddly enough, it worked.
What is next: We get some well established OSM based map data, and good to go. In theory…
Let’s see what isn’t going so smoothly.
Say, we want to search for an adress, how about Lothstraße in München? After all, it is in the map data:
1
Turns out: no results when searching for it. Why? I can’t tell you, really, but we can solve it.
Let’s convert some maps in a way that works, tested specifically for the nüvi 205t (Update: And the etrex 20x) :

  1. Get a map, for example germany-latest.osm.pbf from Geofabrik
  2. Convert the .osm.pbf to .o5m using osmconvert
    osmconvert germany-latest.osm.pbf -o=germany-latest.o5m
  3. Filter with osmfilter to keep only boundaries in this new o5m file
    osmfilter germany-latest.o5m --keep-nodes= --keep-ways-relations="boundary=administrative =postal_code postal_code=" -o=germany-latest-bnd.o5m
  4. Generate boundary files with mkgmap. We need these, because without them, there would be countless duplicates of the same city and the streets would be split into all these different “virtual” cities on the device. Streets without a city tag would not be assigned to any city at all, making it almost impossible to search for adresses
    java -cp ./mkgmap/mkgmap.jar uk.me.parabola.mkgmap.reader.osm.boundary.BoundaryPreprocessor germany-latest-bnd.o5m bnd
  5. Now we need to split the map with splitter, so it can be processed for the device
    java -jar ./splitter/splitter.jar --output-dir=./splitmap/ germany-latest.osm.pbf
  6. And in the end, we convert the map for the device, using mkgmap again (The options –tdbfile and –make-poi-index might very well be useless, but this is the exact commandline i tested with success)
    java -jar ./mkgmap/mkgmap.jar --gmapsupp --country-name=Deutschland --country-abbr=DEU --bounds=bnd --drive-on=right --max-jobs=4 --check-roundabouts --process-destination --process-exits --housenumbers --latin1 --index --location-autofill=is_in --make-poi-index --poi-address --link-pois-to-ways --add-pois-to-lines --add-pois-to-areas --tdbfile --verbose --route ./splitmap/*osm.pbf
  7. Copy the resulting gmapsupp.img to a folder called “Garmin” on a FAT32 formatted microSD

There were still two duplicates of some cities, but the one using the format “Cityname, State” contained >99% of the streets, and the one using “Cityname, Country” almost none, so it is easy to use the correct one when searching for adresses.
I am stil confused why there were no other reports about problems with the maps made by computerteddy and frikart.no yet, but if they show up, mkgmap is your friend.