logo separator

So what about routing?

15
Jun

Many people are interested in creating routable maps and this must be the most asked-for feature for mkgmap.

I've was never really concerned about routable maps in the beginning, both because there wasn't really enough OSM data to do routing except in localised places and because the format was only partially known in openly available information. The situation is a lot different now and I think it should be within reach with a bit of luck.

What needs to be done

If you want to help out, then here is a list of things that need to be done. The truth is though, that it is all blocked on figuring out the extended TRE header. However it should be possible to produce a file that would work in an open source navigation program such as navit that ignores that part of the TRE header.

Extract information from OSM files

Extract and calculate routing information from the OSM data. All projects that do routing with OSM data need to do this to some extent so there is plenty of inspiration. Some people are converting OSM data for use with cGPSMapper, for example the perl script [1] by Liosha.

Implement the NET subfile

This subfile links together the road network. Watch out for a separate post with news on this soon. Or look around in svn...

Implement the NOD subfile.

This contains routing information. There is now quite a lot known about this subfile., I'd think at least enough to implement some routes and see what happens. See for example the libgarmin [2] project although that reads the format rather than writing it. There is also a write up [3] by Robert Vollmert based his own work and information from Alex on the libgarmin project.

There is also code to display the NET and NOD files in the display svn. It doesn't yet fully work with every map, but to produce a map we don't need to understand every aspect of the format.

TRE header versionl with size of 184

The headers in Garmin maps have different versions identified by the size. It appears that you need this version of the header to have routing as without it the map does not even display when there is a NOD section.

This is in fact the sticking point at the moment and it isn't possible to know how long it will take to solve. I've made a little progress towards working out what the values are and that can again be seen in the display svn.

Unknown things

It might be that there are more things that need to be discovered, but we won't know until we try...

Posted by steve on 15 Jun 2008

Latest commits

  • mkgmap-r4923 failed-render.patch:.
    08 jan 2025
  • mkgmap-r4922 improve AngleChecker to fix wrong or missing routing hints where roads are spltting or crossing at sharp angles..
    31 aug 2024
  • mkgmap-r4921 fix split() so that there are no gaps between the 4 children.
    10 jun 2024
  • mkgmap-r4920 update file sizes in unit tests, no functional change.
    10 jun 2024
  • splitter-r654 - add note that splitter doesn't handle holes in *.poly files.
    05 apr 2024
See more...