osm2mp.pl: OSM -> Polish format converter

The following is a copy from the IRC talk about this, contains some additional info:

Great stuff indeed :stuck_out_tongue:

Could someone point me to wiki article or similar describing the tiles you are referring to?
What defines the tile edges? I create map from southern half of finland. Looking at the link http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=http:%2F%2Fwww.mkgmap.org.uk%2Ftmp%2Fareas.kml&ie=UTF8&z=3
seems that my map contains 3 tiles. Is that the case?

The tilesplitter has some kind of tile optimisation algorithm which aparently produces these tile bboxes. Luckily you can define your own bboxes as well, placing the while of Finland in a single tile and have the algorithm determine the other bboxes.

This is my result when working with half the planet (Europe, Asia, Africa and Oceania)

That’s nice, prolly a picture of the month… And also fun seeing Google maps being slow.

Hi all!

I’ve added basic cropping functionality to osm2mp. It also creates boundary road nodes.
This time available in svn only.
Use --bbox <minlon,minlat,maxlon,maxlat> to specify boundary box.

Does this mean that I can take one large file (say country.osm), split it into smaller tiles via multiple runs of osm2mp with several matching --bbox’es and routing will work across tile borders?

weolvi,
yes, you can. And routing will work :slight_smile:
You can also use tile splitter first, and then osm2mp with bboxes from areas.list
I’ve successfully built map of Russia such way: http://gpsmapsearch.com/osm/mp/

Note that turn restrictions disabled this time

Awesome! It looks like we now have a full chain of software capable of generating routable Garmin maps without human intervention for the first time. :smiley:

Very cool and good work liosha!

/me is going to implement an automated chain this weekend :slight_smile:

great work , I’m sure we are all waiting for this
thanks

Always a convert a map from an osm file to mp with osm2mp I get some messages saying: Warning! Turn restriction RelID=XXX is not properly processed, but I check relations and seem to be correct (at least I don’t find the error). Could someone check relations in this area [1] and tell me if there’s something wrong or if it’s a problem of osm2mp?
[1] http://www.openstreetmap.org/?lat=39.481821&lon=-6.363901&zoom=18&layers=B000FTF

cdavila,
it’s a problem of osm2mp - this time it can’t process restrictions on splitted roads.
hope i’ll fix it soon :slight_smile:

OK, let’s wait
Thanks

Some experiences
Ok, so I also tried to put up a chain to produce some maps for the first time. But it was neither easy nor successful – most likely depending on the tools used. Here’s what I experienced; maybe somebody has some good ideas for improvement:

  • Using “osm2mp --bbox …” didn’t work for me on europe.osm as osm2mp first loads all nodes into memory and fails after about 8 million because I have only 1GB. Ok, so I have to first make tiles that are slightly larger and then let osm2mp do its job.

  • Tried “osmosis --bb completeWays=yes” to include every polygon that has at least one node inside the bbox but this is so slow that it’s just unusable.:frowning: Then I tried just some ordinary but 0.1° larger bbox’es and that worked OK. But who knows what that 0.1° should really be?

  • Then I wanted to compile and test my new maps with mkgmap. Compilation worked and I can see all tiles on my Garmin. Routing works but not across tile borders.:frowning: Is it possible that mkgmap is not yet able to use the links provided by osm2mp?

Just in case you succeed – could you please make a complete set of maps of Europe? I am still using Radomir’s, but they are getting outdated and France is broken (at least on my machine).

I planned to use the tilesplitter application.

Osmosis’ completeways function is borked :slight_smile:

That is very possible. Perhaps the author of Mkgmap just needs to be informed of the mechanism osm2mp is using.

osm2mp is using standard cgpsmapper’s mechanism:

see manual for details: http://cgpsmapper.com/manual.htm

Great stuff, liosha. Routing across tiles really work, and POI indexing also work.

Just a minor error on line 279 of osm2mp.pl

          $poicountry = $country        if ($region);

maybe what you meant was

          $poicountry = $country        if ($country);

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)

  • Go to C:\Perl\bin
  • Start ppm.bat
  • select template-toolkit for adding
  • add template-toolkit to your perl installation

Part III: Choosing a part of the world map

  • go to www.openstreetmap.org
  • 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”.

perhaps you can paste this into the wiki page?