Tool for finding missing buildings: OpenStreetMap vs Maa-amet

Since I am already comparing building geometry with Maa-amet for ADS imports, I created a interactive map tool to find missing buildings:


  • Compare building geometry using OSM vector maps and Maa-amet WMS map layers.
  • Helps to locate missing buildings.
  • Use Edit area with iD to add the building manually with iD editor.
  • Use Send geometry to Level0 to load building geometry directly from Maa-amet and open it with Level0 editor.
  • Use Download GeoJSON to get building geometry and use it with JOSM/GIS tools.

With Level0 it is possible to add complex building, with over 50 nodes, to OSM with just couple of clicks:

Keep in mind, that this tool doesn’t display live OSM data on map. This means it is essential to check surrounding area yourself and avoid making mechanical edits.


Nice! Though for adding I think that maybe Maa-amet’s data is good enough that we don’t really need Level0 and a human in-between.

Sure, with couple of extra steps, like checking if the building footprint doesn’t collide with existing roads/other objects, this data could be imported to OSM fairly easily. If anyone whats to do this, I’m happy to help, but currently I don’t plan to do this myself. And who knows, maybe @SviMik will continue with his imports?

But coming back to this tool, the main goal isn’t to import individual buildings, it’s to visualize geometry differences. At some point I might add support for detecting other issues like high mismatch %; non 1:1 relationship; demolished buildings.

1 Like

Well, this is embarrassing:

Already two issues with this single example. Firstly, there was typo with y… And now the bot discovered, that I accidentally included the first polygon node twice. Anyway, both of these issues should be now fixed.

Since I also added height tag to level0 conversion, I wanted to add the highest missing building. This one in Kiviõli was adjacent to another new building, so this was no good because it would create duplicate nodes when adding both.

The next one was a water tower, but that was already in OSM tagged as man_made=water_tower.

Finally, I found the suitable test subjects in Tartu. And even then I needed to delete a old path that intersected with a building. This just shows why importing building footprints isn’t as straightforward task as it might seem.

@dgmapping Thanks for this useful tool.

Note for those, who have secure browser setups - WebGL needs to be allowed in order for it to work.

If someone of us thinks about automatic updates, then misalignments can be both ways - mostly Maa-amet is correct and OSM wrong, but also OSM is correct and Maa-amet outline does not correspond to real-life ortophoto. I have no idea how it can be solved programmatically. Also interesting issues would be cases where OSM has one building, but in Maa-Amet it is from two to many separate buildings (typical use cases: semidetached houses, terrace houses, garage societies). At one point I systematically fixed many of those, but surely there still are unfixed ones around.

@dgmapping can you advise what is the time diff? At on point the numbers and plus signs show missing buildings. If buildings are added to OSM then how much time should pass for update (so that numbers and plus signs will be gone).

These green dots, that indicate missing buildings, are currently updated manually. In the beginning of a month when I run the address update script, I plan to update these dots as well. If there is a need to see more recent data, I might change that. But once plus sign is clicked, real-time geometry is fetched from Maa-amet.


  • OSM Vector data might be up-to 3-4 month old, but I plan to replace it, since currently it distorts building geometry when zoomed in.
  • OSM Standard raster tiles - same as in - typically 1-5 minutes to see changes in high zoom levels.

@jemm, if you prefer tracing new buildings yourself, try these Maa-amet basemaps in iD:



Just an idea. An interesting variation of this tool could be a script that:

  • finds from OSM all building=construction in Estonia
  • looks them up in Maa-amet
  • and if nähtusklass=hoone (or whatever else would be correct) then we could assume that construction has ended
  • and mark them as building=yes in OSM

As per OSM there are some 900 buildings under construction in Estonia now ( and whereas most have building=construction then some also have construction=something added too. But I’m quite sure that for most construction is over and they are in use.


Thanks for the suggestion! It makes sense to highlight invalid construction tag. It’s also easy to implement but first I need to figure out how the general UI should look like with multiple data layers that display different kind of issues.

I believe this step need manual review since the building geometry might have been changed after the construction.

1 Like

It’s been a while, since I posted here. During that time @jemm has made huge effort by manually conflating Maa-amet building footprints and loading them into OSM by small chunks.

When it comes to Maa-amet datasets, both ETAK buildings and ADS, I recently started to save the combined result into new versioned dataset that can be used to track any kind of change made in Maa-amet data.

Here are some examples of what kind of changes I can detect for each month:

  • buildings added to ETAK
  • buildings removed to ETAK
  • building status changed to ruins
  • building status no longer in construction
  • address removed from building (my current ADS script don’t remove addresses from building)
  • address change with multiple addresses involved (my current ADS script skips buildings, with multiple addresses)
  • significant changes in geometry (eg. building footprint is now twice as small or twice as large).

Is anybody interested in using this kind of data?

Hoped to import this Node: 2108666029 | OpenStreetMap building, but for some reason there is no + button while it’s red.

This building is now available.

It wasn’t there because OSM building Tobiase 56, intersected slightly with Vilmsi 34. I should probably add additional threshold, that ignores such tiny intersections.

PS: Just yesterday I tested how geometries for buildings can be updated. Very similar to @fghj753 import but only for individual buildings. Currently it can move nodes, create new nodes or delete them as needed. The only problem is that building nodes must not be connected to anything else or have any tags. This means geometry can’t be updated for quite significant number of buildings, especially in urban areas. Just now I also used it for Tobiase 56.

1 Like

This combined Maa-amet dataset can be now accessed by a single building from here:

Not sure how useful it is right now, since it only has data for last 2 months, but some time in the future it might become helpful.

The layout is heavily inspired from mapki OSM Deep History: OSM vs ETAK

Here is one more example: area of building geometry is now 6x smaller. Recent kiirortofoto imagery also shows that part of the building has been demolished and possibly rebuilt.

Updated this tool by including all missing buildings that can partly intersect with existing OSM buildings. Intersection threshold is set to upto 20%. In such cases fixme tag is also included. Not sure how useful it is, since manual intersection fixes might take same amount of effort than tracing building from scratch. Here is one example I used for test.

1 Like

I think it’s useful. Tracing isn’t always easy to do, if the building has different parts with different heights or some of it is hidden. I even remember that there were times when I wanted to import an existing building’s shape, because the one in OSM was so badly drawn.

Tallinn, Tatari tn 1
Here’s a good example of something which would be not that easy to draw, but very easy to import.

If you delete building this building from osm, then wait a ~month, you should see the Tatari 1 in the tool :slight_smile:

As an alternative you could use this basemap in iD:,BAASKAART,KAART24,HALDUSPIIRID,TEED,KYLAD&STYLES=&FORMAT=image/jpeg&CRS=EPSG:3857&WIDTH=256&HEIGHT=256&BBOX={bbox}&VERSION=1.3.0&SERVICE=WMS&REQUEST=GetMap

Tracing from this vector map is much easier than from orthophoto or even Maa-amet põhikaart.

1 Like

Busted! :joy: In my defence, I was stuck in a meeting and was bored. Sure, there are easier ways for importing outlines like in this case, doing nothing. You do have a point and should look into importing rather than handycrafting building outlines. I wonder if there are ways of importing building volumes, not only shapes.

Would it be worth considering replacing the currently available maa-amet basemap (in iD and JOSM) with this one? I just tried it, and indeed, it’s night and day compared to what we can use by default.

edit: this might need some more investigation though. I did find some buildings missing on the vector map which appear on the default basemap, like the industrial ones at Kotzebue 18d in Tallinn (ex: Way: 26903991 | OpenStreetMap)

Theoretically it is possible, but practically it will be quite an effort to transform 3d datasets into OSM compatible format and the merging it with existing OSM buildings.

Currently there are even different sources for 3d buildings:

Maa-amet LOD1 - useless in OSM context
Maa-amet LOD2 - too detailed for OSM but with simplification it could be made usable

and Tallinn has 3D models as well:

Both iD and JOSM use Editor Layer Index and basically everyone can submit changes to there. Last change to ee layers was made by @Pikse:

It is because “põhikaart” is updated once per year and the other one is updated daily. Currently it seems Kotzebue 18d was removed from Maa-amet on 30.11.2023.