How do you deal with impossible draw ordering?

Hi,

I’m relatively new to creating Garmin maps from OSM. I use mkgmap. I am making maps for bushwalking (hiking).

I am struggling with draw order. E.g.

  • an island in a lake needs to display in the lake. So island needs a higher draw order than lake.
  • a lake in a forest needs to display on top of the forest. So lake needs a higher draw order than forest.
  • so far we have in order forest, lake island.
  • now what about forest on an island - it needs to be higher than island which is impossible with the other criteria?

Does anyone have a good solution or methodology for ordering polygons?

I’m not convinced that the “island in a lake” issue is a mkgmap one.

If there’s an island in a lake, it’s normally done by making the lake a “multipolygon” (having an outer ring and an inner hole). That way the part between the outer shore and the inner island is clearly water, and the part inside the inner island clearly isn’t.

See http://wiki.openstreetmap.org/wiki/Relation:multipolygon (perhaps more complicated than it needs to be) and http://wiki.openstreetmap.org/wiki/Multipolygon_Examples (hopefully clearer) in the wiki.

A “lake in a forest” is slightly more confusing, due to the slightly ambivalent meaning that “landuse=forest” has in OSM, which is described a bit at http://wiki.openstreetmap.org/wiki/Tag:landuse%3Dforest .

Edit: If you can perhap point to an area where this occurs people can perhaps have a look at it (to see where the data’s come from, for example - it’s possible that some “forest” has been imported that isn’t, really).

Thanks for your comments.

I know that islands should be in a hole in a lake, but I was thinking that this may not always be the case. I don’t have any examples.

Re: lake in forest there is an example at “lake barrington, tasmania”. (BTW there is a Lake Nowhere Else just to the NE)

I was just wondering how other people set the order. I am inclined to put all the landuse tags low.

That’s around here then:

http://www.openstreetmap.org/#map=14/-41.3845/146.2336

Looking at the southern end of Lake Barrington, it’s clear that:

a) The forest doesn’t stop where https://www.openstreetmap.org/way/258025172/history does - it goes further south.

b) The lake (and other lakeside areas further north) don’t have trees on them.

I’d definitely start by trying to split way 258025172 into smaller ways (not even initially creating a multipolygon) so that what’s tagged as being “trees” is the part with trees on it, and what’s not tagged as “trees” isn’t.

There are draw order issues with mkgmap, but this doesn’t look like one yet.

Draw orders have to be set in the TYP file, so if you havent used one yet, use it.
As already mentioned, it should be mapped correctly on OSM first, with multipolygons.
Then you have some tricks in mkgmap, to render very big polygons (water or forest) at a lower level, with area_size()
Example natural=water & area_size() >=50000000 [0x3c resolution 14]
See for my TYP file and styles https://github.com/ligfietser/mkgmap-style-sheets

PS please consider that “big” here in the Netherlands can be of a totally different dimension (thanks to the micro mapping in this part of the world) than for instance big polygons in Australia :wink:

1 Like