Ok, here is my way of a fully automatic process of downloading osm, creating a routable mp and then img and sending it to the Garmin device. And the osm, mp, and img file will be stored in a separate folder. Probably experts will find some problems in the maps created this way. So, I’m open for critics, as I want to learn of these. (I have just started dealing with this a few days ago.)
Part I: Required software:
download
groundtruth
mkgmap
osm2mp
sendmap
activeperl
(14 MB for the first four plus 82 MB for Perl.)
activeperl needs to be installed, the other software can just be unzipped. To have the batch file at the end of this post running right away, create a folder with a name like “MapManager” (anywhere on your HD) In this folder create subfolders
GroundTruth
MKGMap
OSM2MP
Sendmap
MAPS
and unzip the programs to their corresponding folder.
Part II: Completing Perl (description for Windows, on other systems this works differently)
select a viewport you want to end up on your Garmin
click Permalink on the lower right of the page
select the URL and press Ctrl-C
Part IV: modifying the batch file.
In “MapManager” create a batch file “ManageMaps.bat” that looks like
set NAME=Chicago
md MAPS%NAME%
GroundTruth\groundtruth getdata -bu=“http://www.openstreetmap.org/?lat=41.785&lon=-87.766&zoom=9&layers=B000FTF”
copy output.osm MAPS%NAME%%NAME%.osm
del output.osm
cd OSM2MP
osm2mp.pl …\MAPS%NAME%%NAME%.osm > …\MAPS%NAME%%NAME%.mp
cd …\MKGMap
java -jar mkgmap.jar --route …\MAPS%NAME%%NAME%.mp
cd …
copy MKGMap\63240001.img MAPS%NAME%%NAME%.img
del MKGMap\63240001.img
Sendmap\sendmap20 MAPS%NAME%%NAME%.img
echo DONE
pause
Modify the first line with a name describing your openstreetmap view and the third line via Ctrl-v with the corresponding URL. Save “ManageMaps.bat” and start it with a double click in the explorer. If you have your Garmin connected you can return after some time (that of course depends on the size of the map), and if there is “DONE” at the bottom of the cmd window, you can unplug your device and enjoy the map. ANyway, your map will be placed in MapManager\MAPS\NAME, where “NAME” is the value of the NAME variable in the first line of “ManageMaps.bat”.
I then use ezMS to install in mapsource so that I can test the map’s routability before sending it to my gps device.
POI addresses and turn restrictions doesn’t yet work with mkgmap, looks great when compiled at mapcenter2 though. Maybe if you can create POI for roads we’ll then be able to search for street addresses as well
mkgmap can already create POI for roads. Use option --road-name-pois and you’ll get them in your map.
There’s also a patch for POI addresses, take a look at “POI Address support, Country Region autofill” thread in mkgmap mailing list: http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2009q1/subject.html
afaik you don’t need POI for roads to be able to search for street addresses.
cgpsmapper can produce search index for streets (and i think mapcenter too).
Ok, I’ve posted it to the wiki. Personally I’m interested in the issue “Any additional options that will improve the result anyway? Any options that will improve it in some cases?”
In principle, it would be simple to write a GUI for all of this, for those users, who surrender upon mere talking of “.bat”.
I think generation of map with mkgmap could be improved with some options. This is the full command I usually use:
java -enableassertions -jar mkgmap.jar --route --utf8 --description=“OpenStreetMap-Cáceres” --gmapsupp --country-name=ESPAÑA --country-abbr=ESP --region-name=EXTREMADURA --region-abbr=EX --family-name=“Open Street Map” --net --road-name-pois
Why?
-enableassertions: mkgmap is less likely to create a buggy map if you run it with assertions (java -enableassertions -jar mkgmap.jar), it will crash instead.
–utf8: enables non ASCII characters for languages other than English
–description: any description for the map to identify it.
–gmapsupp: This creates also a combined map (GMAPSUPP.IMG) from supplied .osm file. Combined maps can be copied directly to GPS devices that support mass storage mode.
–country-name: your country name
–country-abbr: your country name abbreviation
–family-name: if you omit this your map will be named ‘family name’
–net: Enables the creation of the NET section. With this option enabled the garmin device is able to lock on roads. Some devices also display the current street in the status bar.
–road-name-pois: it creates a poi for each highway in the map, thus enabling searches of streets using Spell feature of garmin devices.
Additionally, -Xmx may be necessary if map is quite big to avoid memory problems. -Xmx256M will assign 256 MB of memory for the process.
cdavila ,
My map generated by mkgmap has a problem with abbreviated POI/street names on MobileXT. Any option that’ll correct this? No such problem when compiled with mapcenter2.
I’m not an expert on mkgmap. More details would be necessary about the problem. You can ask in mkgmap mailing list or the author of this feature (markb at ordern dot com)
Using v0.65 all but one restriction in my map is processed, but now no information about that one is in the output. How can I know which restriction is giving problems?
KaChing_Cacher,
do you have Perl installed?
did you installed required packages (Template-toolkit and Getopt::Long)?
have you prepared .osm file and named it ‘file.osm’?
what do you see on screen after running start.bat?
“Could not open file: 1252” …
I also used --road-name-pois, but how can I remove these ugly green points on the displayed map now?
I use a Garmin Vista HCx.