Announcement: OpenLandcoverMap

Hello everyone,

I’d like to share with you my new project called OpenLandCoverMap. You can find the website here:

This is an attempt to create a map based on OpenStreetMap data, which remains non-empty even at zoom levels z0-z8. As you know, standard OSM tiles (“Standard” or “OpenStreetMap Carto”) tend to be empty and uninteresting at these zooms.

The reason for this is that we cannot simply draw existing OSM polygons on z0-z8 because they are too small and there are too many of them. Moreover, a lot of objects in OSM consist of multiple smaller parts like woods or metropolitan areas, which makes it impossible to select polygons based on size alone.

To address this issue, I’ve created a script that generates completely different geometry for overview zooms. The algorithm is quite simple: all OSM polygons with landuse=* and natural=* tags are matched with a hexagonal grid (“h3” currently of resolution 6).

For each cell in the grid, we identify a single tag that best describes the cell based on the largest total area of polygons with each tag.

To make the map more engaging, I’ve also added cities and mountain peaks. However, these points cannot be selected for rendering solely based on population or elevation figures, so we calculate “cartographic importance” for each point. This is done using both discrete isolation and grid cell density methods.

Two additional goals of this project are the following.
Firstly, I want to highlight the fact that there are still many unmapped areas in OSM. OSM quality is [mostly] good in Europe, but other continents are mostly blank. Not a joke, just take a look at the map.

Additionally, I aim to provide some new ideas for the landcover=* discussion. :slight_smile: You can see actual tag usage here: Obviously, it’s different a bit from the existing proposals.

There are no regular automatic updates yet, I hope to make daily (or at least weakly) updates when I move to dedicated server. Currently all processing is performed on my PC.

The source code is available on GitHub if you’d like to take a look at it:

Generalized geometry, just in case you would like to make some experiments with it yourself, can be obtained via the download page: OpenLandcoverMap downloads , in shapefile format.

Any comments are welcome!



The current size of the hexagons might be a tad on the big side. The cut-off for built-up areas now seems to lie at the ‘quite large’ city/agglomeration level. This makes some areas look rather more bucolic than they are. :slight_smile:


Looks interesting. One request: could you add a legend to the main page? I can guess what some of the colours are but am unsure of others!


10 posts were split to a new topic: Lack of OSM Trademark Enforcement

Yep. Have you seen the new generalization feature in osm2pgsql from @Jochen_Topf? I haven’t had a chance to play around with it properly yet.

@Casey_boy , thank you. I agree, a legend would be really nice. I will add it when I figure out how to do this more or less programmatically from CartoCSS files. Otherwise I will have to maintain it manually, which I really do not want to. Style and colors are yet subject to changes :slight_smile:

Great. How often is this updating? Asking because Carto only updates Friday night (CET) for 2km and lesser zoom. Like to helicopter up and see the white spaces eliminated.

If I increase threshold, we get a lot of metropolitan areas in India and Africa, where nothing but landuse=residential is mapped. :slight_smile: But OK, I will check what can be improved here.

I’ve seen some of his blogposts, but I decided to implement my own ideas first :laughing: Judging by screenshots, @Jochen_Topf aims to make geometry rather of z8-z10.

Currently I do manual updates weekly or so, but I hope to perform daily updates when I defeat osm2pgsql. Currently update via osm2pgsql just freezes, and I have to do the full reimport.

I wouldn’t try to address faulty data too much. Making it obvious that data is flawed ought to improve the map in the long run.


Noticed some odd mountains on low z. Grandview, 7784 and Morro do Mirante 8165. The latter is 816m in OSM data, so exactly a factor of 10 off. I don’t see any unusual tags on these.

It’s from previous version of that object. Online map has not updated yet.

Generally speaking, there are a lot of erroneous elevation values, just because nobody can see them.

1 Like


1 Like

My focus is to provide general, fast, and easy-to-use mechanisms for OSM data generalizations, that’s not tied to specific zoom levels. I love to see more people working on stuff like that and discuss it, so it is great that you are experimenting there. I’d also be interested if there is anything we can provide (or you want to add to) osm2pgsql, because I think osm2pgsql/PostgreSQL/PostGIS is a great platform for generalization work.


The map is updated. But there are some other suspicious mountains. It seems that they prefer feet in US (despite ele=* definition) , so hills are three times higher then in Europe.

@Wulfmorn I’ve thought of it!
I’ve thought that maybe I can make an Earth Map for Civilization 6 game solely from OSM data, especially since maps in Civ6 are based on the same hexagonal grid and format is open, so it could be a simple export script.

(random map form Civ6 game)

However, despite that geography model is very primitive in Civ6, we still do not have relevant data in OSM for that.

There are just 5 types of terrain in Civ6, which are rather types of soil:
SNOW (permafrost)
GRASSLAND (more fertile soil)
PLAIN ( a bit less fertile soil)

3 types of “features”:

and three types of relief:

As simple as that!

However, in OpenStreetMap we do not yet have permafrost and tundra mapped, no distinction between “grassland” and “plain”, and no distinction between woods and jungles (we still argue about woods vs forests, and only 10% of woods have tags specifying leaf types), to say nothing of the white spots. Luckily, wetlands are present in abundance in OSM :slight_smile:

There are occasional natural=hills and natural=mountain|massif, but i suspect they do not form consistence coverage.


I did some overpass queries to find and fix some obvious feet elevations, but there is probably room for a more systematic treatment.


If someone took the ~600,000 natural=peak objects with ele, which isn’t really a lot of data, and made a public site with semi-regular updates for “top 100 peaks by country” or the like, the OSM data would probably get a lot cleaner in a matter of just a few months.



Well, this is exactly this project is aimed for. :slight_smile:
I can create a tile layer with mountain peaks only, without landcovers and cities, like this:

If one zooms to a country, he/she will see the most important peaks and can see whether it is correct or not. I do not like to do that in a text format, long lists seems to be dull.

However, someone should help me with frontend, and make a panel with switches to select layers. Any library will do. I am struggling with that, JavaScript never has been my strong side :slight_smile:

1 Like

Long lists are boring, but I created one for you :slight_smile:

This page shows what percentage of a country’s territory is covered by generalized landcovers.


Most European countries are ~100% covered, worst is Albania (just 54%). Korea and Japan are 99% covered. In Africa Cameroon and Gabon are ~100% mapped (I am curious, was it some import?).

The most poorly rendered country is Mongolia, with only 7% coverage.

Comrades from Albania and Mongolia, catch up! :smiley:

For those who prefer visual representations, here’s a map::

(Disclaimer: country outlines from Natural Earth are used)


May I ask about specifics of the algorithm? For example, it shows Serbia at 99%, while it has quite sizable swaths of bare map, such as this. It seems it works on the principle “there is at least a small patch of landuse or natural within every NxN hexagon/square” which produces a rather optimistic assessment.

1 Like