logo separator

[mkgmap-dev] Proposal: Multipolygon handling and line based multipolygons

From charlie at cferrero.net charlie at cferrero.net on Sat Sep 11 17:24:46 BST 2010

WanMil (wmgcnfg at web.de) wrote:

> The latest question about the boundary handling of multipolygons
> encouraged me to start another try to fix the problem in mkgmap (please
> read http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2010q3/008976.html).
> Now I have another idea.
> The problem is:
> The resulting multipolygons usually are used as polygons. But some
> should only be used for the line processing (country borders). The
> multipolygon algorithm creates artificial polygons which are annoying if
> you want to use them as lines: you get artificial borders inside your
> country.
> My solution:
> The mp algorithm adds a tag mkgmap:styleusage=polygon to all
> artificially created polygons. Additionally it duplicates all input ways
> of the multipolygon, tag them with the mp tags and add
> mkgmap:styleusage=line.
> The style handling now applies line rules only if the tag
> mkgmap:styleusage=line is set or if it is completely unset. The same
> with polygons.
> With this solution the style writer can decide on its own if he wants to
> use the polygon information or the line information of the multipolygon.
> 2nd advantage: the style writer need not to change any existing styles
> as this new feature is handled internally in mkgmap.
> 3rd advantage: the line information of properly tagged multipolygons
> could also be used if the multipolygon is not completely contained in
> the tile. This if often the case for country boundaries.
> The --process-boundary-relations option of mkgmap would become needless.
> I am not an expert in styles so maybe I have missed something?!?
> What do you think about my idea?
> WanMil
> _______________________________________________

That sounds like a good proposal. Another, possibly  
conceptually-related problem with the mp code is as follows:
Consider a multipolygon with one outer way having the tags
and one inner way having the tag

The mp splits this into two outer polygons with landuse=farm and  
barrier=fence and one inner polygon with natural=water.  The problem  
is that now the fence no longer follows the (outer) ways it was  
originally designed to follow, but also follows the synthetic  
orthogonal ways created by the mp code.  If the style rules process  
both landuse=farm (in the polygon ruleset) and barrier=fence (in the  
lines ruleset) then you get an unwanted, synthetic fence being created  
where none really exists.

Having the mp code add a new tag to synthetic ways created as part of  
multipolygon splitting would be one way of tackling this problem (by  
subsequent re-writing of the style rules).  The other would be to  
avoid adding barrier=fence (or other such linear tags) to synthetic  
ways created as part of polygon splitting.

Hope that made sense,


More information about the mkgmap-dev mailing list