More on vegetation rendering in OpenStreetMap maps


This is a followup on my previous piece on differentiated rendering of woodland. Woodland is a fairly well defined part of vegetation to be rendered in maps. If you go beyond that things get more complicated.

In OSM-Carto it has been a traditional practice to use green color fills for vegetation related features – but not in a strict fashion. There are green fills being used for things that have nothing to do with vegetation and there were traditionally also vegetation related features that are rendered in other colors than green.

In a way green colors cover the largest part of available color space because green is the part of the color spectrum the human eye is most sensitive to. At the same time vegetation mapping in OpenStreetMap is traditionally very undifferentiated. While urban areas are mapped and rendered with fairly specific differentiation there is only a very small set of widely used characterization of natural vegetated areas. For agriculturally used areas this is a bit better and i previously discussed differentiating that.

Here is the set of green and other vegetation related fill colors in the wider sense that were so far used in the alternative-colors style.

green fill colors used so far in the alternative-colors style

These fill colors i used so far can be categorized roughly into

  • physical vegetation types – that is colors that indicate vegetation of a certain physical charateristic
  • functional vegetation types – that is vegetation related colors that indicate areas which not necessarily have uniform physical properties but which have a well defined function that implies some sort of vegetation
  • not universally vegetation related types – these are green colors used for areas that are widely associated with vegetation but are in reality not strictly implying vegetation.

What i am concentrating on here are the physical types, in particular those that apply to natural or close-to-natural vegetation and the allotments color – which is, as you can see in the above illustration, kind of an anomaly.

I implemented the changes discussed here already some time ago but refrained from publishing them to allow OSM-Carto to pursue its own approach to color design independent of me.

The natural vegetation color scheme

The way natural vegetation is mapped in OpenStreetMap is based on the coarse physical characteristics so this is part of the physical vegetation types group as illustrated above. The wood and grass colors – which are dual use for both natural areas and human maintained areas – enclose the spectrum of vegetation types. For wood i explained this in detail before and with grass the situation is quite similar. There are a number of common tags for areas with grass growing on them in OpenStreetMap – the most common tags for those are landuse=meadow, landuse=grass and natural=grassland – those tags are not consistently used for distinctly different things however, it is all a fairly wild mixture, so for data users all you can say is they usually as a smallest common denominator indicate areas where grass grows. And accordingly they are shown in the same color.

The orchard color straddles the line between these endpoints (wood and grass) while the heath and scrub colors have so far been situated on different sides of the line. This can be seen illustrated in the image further down on the left – which is a simplified depiction of course since in reality color space is three dimensional.

This basic scheme had been used in the OpenStreetMap standard style for a long time. The main motivation was that the number of natural vegetation colors is rather small with only four colors for what ultimately covers a huge portion of the earth surface together. It therefore makes sense to make these four base classes well differentiable covering the full spectrum of moderate saturation green tones – with orchard in addition in the middle and the other green fill colors around.

However this also means that the large difference between heath and scrub color indicates a larger difference in meaning between the two than there actually is.

A bit on scrub and heath

Here a bit of background information on the vegetation types in question.

natural=scrub and natural=heath in OpenStreetMap essentially covers different height ranges of permanent, woody vegetation. Both of these in OSM include what is commonly understood with the terms scrub and heath but is semantically much broader.

mixed scrubland in southern France

The height ranges are not precisely defined but for scrub this covers everything that is less tall than full grown trees are typically in the area in question down to the limit towards heath. The plant species of scrub can be either young or smallish specimen of the same trees that form full grown woodland or distinct scrub species.

Ericaceae based heath in southern German mountains

The boundary between natural=scrub and natural=heath is in OSM commonly drawn at a height of about one meter. But this is not a very clear limit either. What is mapped as natural=heath typically consists of distinct dwarf scrub species. And this includes low growing woody plants in all kind of ecosystems and climate zones including ones that are not commonly called heath.

dwarf scrub vegetation in the eastern Mediterranean

I recently added a number of photo links to the OSM wiki pages for both showing typical examples where these tags apply.

In practical mapping consistency of mapping scrubland and heathland is somewhat lower than woodland mapping in OSM. The most widespread incorrect uses are

  • it is relatively common to incorrectly use natural=scrub to indicate less dense open woodlands..
  • natural=heath is sometimes incorrectly used for rough but non-woody low growing vegetation

this is not scrub, since these are full grown trees

this is not heath, this is grassland with some scrubs and young trees

this is not heath, this is grassland

In other words: Picking a completely non-fitting tag as kind of a compromise between other tags that partially apply is not advisable. You should always choose the tag characterizing the dominating plant type in those cases. Unfortunately there is currently no established tagging system for secondary vegetation types.

Like woodland both scrubland and heathland exists in deciduous and evergreen variants. But this is much less commonly tagged than for woodland and for heath such tagging is almost non-existent.

The new colors

So overall heath, scrub and wood form kind of a linear sequence and it makes sense to acknowledge this with the choice of color as a linear sequence in color space as well. To allow reasonably good differentiation i brightened the heath color somewhat and placed the scrub color halfway towards wood. Some more tuning of the other colors around and the colors worked out quite nicely.

the old and new natural vegetation color schemes

different heath colors in OSM standard style variants

As a result contrast between scrub and heath as well as towards grass and wood colors is reduced but they are still reasonably good to distinguish.

scrub and heath at z17 (click for larger area)

and in settings like here this color scheme better brings out the difference between agriculturally used areas and not agriculturally used areas.

scrub and heath at z15 (click for larger area)

Changing the base color of scrub also required adjusting the pattern symbol color for the different leaf_cycle variants. Here is how this looks like:

scrub leaf_type and leaf_cycle variants

An advantage of this is that the neutral symbol colors for no leaf_cycle looks a bit more balanced than previously.


As already mentioned above the allotment colors was kind of an anomaly in the alternative-colors style palette after i had changed the farmland color.

Semantically allotments is an interesting concept. Together with farmland, orchard and agricultural meadows it represents a third type of broadly agricultural use areas which is – like farmland – more functionally than physically defined. Allotments are small scale heterogeneous farming areas where plants are grown for personal use or sometimes small scale sale. There is a broad range of practical implementations of this world wide and a broad range of produce that is grown in them. And there is not always a well defined distinction from farmland and orchard. The two most common variants are the allotments of Western Europe with typically very small individual plots and only footways in between and the larger scale allotments of Russia and parts of Eastern Europe where the individual plots are larger and there are usually access roads to them.

The color has to work in all of these different settings and needs to suitably represent allotments in all these different variants and environments. Obviously the choice of color is tightly connected to the change with scrub and heath – demonstrating again that a balanced color scheme requires looking at the whole picture and not just individual colors.

Here some examples how this looks like

allotments at z13 (click for larger area)

allotments at z15 (click for larger area)

allotments at z16 (click for larger area)

allotments at z17 (click for larger area)


Here is the whole updated area color scheme of the alternative-colors style.

area color scheme of the alternative colors style

As usual you can try out the changes discussed here yourself – the style can be found on github.


  1. Interesting read, as always, thank you.
    I wonder isn’t there a problem with allotment interpretation (or tagging)? As pointed out in the article, allotments in Eastern Europe have access roads, infrastructure (electricity, water etc.), houses (sometimes quite large) built, and sometimes nothing is grown for consumption (except fruit trees). So in our local topo maps allotments are depicted as residential areas (low height medium density residential areas).

    • Well – tagging in OSM does not further differentiate. Of course there are limits to what you can reasonably classify as allotments, pure weekend/summer homes definitely do not belong to that.

  2. I wish we had your input on “Change allotments color and pattern [to a shade of green] and “Change scrub color”.

    What do you think about adding a pattern for heath? Scrub and forest have a pattern, and as you’ve mentioned the difference between “scrub” and “dwarf scrub / heath” is a matter of degree. But I’ve had trouble finding a good pattern.

    • Hi Joseph,

      i deliberately published this after you changed the scrub and allotment design on OSM-Carto to allow you making your own choices without these being too much influenced by my decisions. But feel free to take what i wrote and implemented as input for your work. I always find it very useful to consider different solutions developed for the same problem and their advantages and disadvantages.

      Regarding use of patterns – IMO use of a patterns should always have a function. This can either be transporting some kind of information – like differentiating between areas with a pattern and without a pattern or with different types of patterns based on tagging of certain properties. This is done in OSM-Carto for example with beaches. Another function would be allowing a look-through effect without using opacity – like for example with natural=reef.

      A constant, non-differentiated pattern on an otherwise unique base color – example in OSM-Carto would be natural=sand – makes not much sense to me. It can be useful if the base color is not very well differentiated from other colors but you want to emphasize the difference at higher zoom levels because what you show is something very distinct but that is still usually a less than optimal situation. We had a lot more of such cases in earlier times in OSM-Carto like natural=glacier or landuse=vineyard but most of these were either removed (glacier) or became a meaningful functional pattern (like vineyard with the orchard/vineyard color unification).

      • “A constant, non-differentiated pattern on an otherwise unique base color – example in OSM-Carto would be natural=sand – makes not much sense to me”

        Heath can in theory be tagged for leaf-type and leaf-cycle, no? I don’t know how common this tagging is at this time, but adding a pattern would make it possible to show the difference, as with scrub.
        It also makes it easier to understand the meaning of the heath color, which otherwise is not completely intuitive as a specific type of vegetation.

        • Yes, heath could be differentiated by leaf_type/leaf_cycle but practically this is rarely tagged and many heathland communities contain a mixture of these (for example the southern German mountains example i showed contains Vaccinium myrtillus (deciduous) and Calluna vulgaris (evergreen)). Note in OSM-Carto scrub is currently not differentiated by leaf_type/leaf_cycle. Before your change the pattern served mainly to differentiate scrub from leisure=golf.

          I kind of doubt you could develop a pattern for heath that would be universally intuitive on a global level – the variety of appearances of dwarf scrub vegetation in different parts of the world is huge and many of them are similar in appearance to non-woody vegetation (i.e. types of grassland) so a pattern could often be misleading.

Leave a Reply

Required fields are marked *.

By submitting your comment you agree to the privacy policy and agree to the information you provide (except for the email address) to be published on this blog.