Before the start of the age of digital maps almost every kind of area distinctly displayed in a map was shown by some sort of pattern. Printing techniques used for maps were fairly high resolution but often limited to black and white or very few colors. So you could show a lot of information about areas by use of patterns while use of nuances in color was usually not possible.
Over time the use of patterns has developed into a sophisticated form of art often with the pattern being used to identify the nature of a larger area to the viewer in general while small variations in the pattern often function to provide additional detail information beyond the overall characterization. Jerry has recently discussed this quite in detail with respect to woodland characterization. Another well known example are patterns for rock and scree depiction, most famous in Swiss topographic maps.
Today most maps produced never see the ink of a printer and screens can display millions of different colors so colors are en vogue and patterns fairly out of fashion. This however has not only technological and economical reasons – maps generally also get less rich in information content. With a digital map you can easily switch between different specialized maps making it unnecessay to put all available information into a single rendering and producing maps with very dense information that are still well readable is difficult and a lot of work. When using purely colors to differentiate surface types simplifying the information shown is also a necessity because despite the ability of display devices and printers to show lots of different colors the human perception is only able to recognize and distinguish a very small set of colors reliably – subtle differences in colors get confusing very quickly.
OpenStreetMap is a bit of an exception here since so many OpenStreetMap map styles are fairly rich and dense in information by today’s standards – also because the OSM mappers of course want to see their work in the maps. This includes frequent use of patterns to show the information. I will here have a more thorough look at the current practice of pattern use in OSM maps and show some possibilities to improve this.
In general OpenStreetMap based maps use static patterns, i.e. the patterns are not varied locally to provide additional information beyond the pattern as a whole as explained above. This is unlikely to change much for dynamically rendered maps any time soon although there are possibilities – more on that later.
In other maps there is sometimes a symbol size variation in the pattern or a mixture of several kinds of symbols – most frequently for mixed forests.
Somewhat different patterns are sometimes used for non-vegetated areas like the glacier pattern in OpenMapSurfer (with no visible repetition but a very visible anisotropy) and the scree pattern in the Thunderforest Landscape Map (random dot pattern texture with apparently 64×64 pixel size):
The virtue of irregularity
What do these examples tell us? First of all a regular grid pattern is a bad idea for natural areas like woodland or beaches. Although maps are an abstract depiction of reality much of the understanding while reading a map is based on associations we make between what we see in the map and how those things look like in reality. That is why forests are shown in green and water surfaces in blue almost universally in all maps that are rendered in color. The same applies for patterns and we do not expect an area that has no regular grid structure of any kind in reality to be shown with such in a map. We will still be able to correctly read it after getting used to but this is not intuitive.
The obvious alternative to a regular grid pattern is a random pattern. This is essentially what you can see in the last two samples – in both cases with some practical limitations. The real problem is however that complete randomness is not ideal either. Nature is usually far less random than it might appear at the first glance. Trees do not grow at random locations in a forest, even if they are not planted.
So on the one hand we have the regular grid pattern, on the other hand a completely random placement. What people frequently do then is generating random variations of the grid pattern. This is nice because it is fast and easy to implement and use and the amount of randomness can be tuned. Still the result is a compromise between two variants that are both undesirable.
If you have a close look at the first three examples above of classical hand made maps you can see that the patterns used there resemble neither a grid pattern nor a randomly displaced grid. These patterns are best characterized as irregular yet uniform. They are irregular since they are not repetitive and cannot be generated based on a simple mathematical rule and they are uniform since properties of the pattern like density of its elements are more uniform than in case of a random pattern.
Why is such a pattern preferable to a random one? Because it better resembles the natural structure of the objects it depicts and because such pattern is both less disturbing and better recognizable in the rendered map.
I have made available a small tool that can generate this kind of pattern with periodic boundary conditions for use in map rendering. This runs in the web browser and generates SVG files. The source code is also available on github for anyone interested to modify. Here some examples for results from this:
One problem this does not solve are the edges of the areas the pattern is used on. Commonly the pattern is cut at those, if necessary right through the individual symbols. Since this does not look so good you might get the idea to remove those pattern elements that intersect the edge – technically this can be challenging to do but in principle this is possible. It however means the pattern is thinned out at the edge by removing individual symbols from it. This might be desirable if the area in question does not have a sharp boundary but in general you will want the edge to be clearly visible. Looking again at the hand drawn examples you can see that because of this the pattern is often densified at the edge of the area. This is not easily possible in an automated rendering system without individually generating the pattern for every area. A possible approach to this is use of progressive patterns. Such a pattern contains symbols for the regular low density use and additional symbol locations at interstitial positions that are only rendered in areas where an increased density is needed. Although this is not as good as an individual variable density pattern it can help showing well articulated area edges.