Tagging "height" of "buildings" and "building:part"s

Hello,

I have been confused with something:

I ran into a couple of cases where a certain closed way representing a building (tagged as a “building”) has a couple of more closed ways inside of it, which are tagged with “building:part” and “height” keys.

openstreetmap.org will not render this inner closed ways, as hadw explained to me recently due to them not representing the actual boundaries between the buildings.

However what makes me confused is whether the main outer closed way should be tagged with “height”?

I found a lot of cases where the outer, main closed way is tagged with only “building” key, but without the “height” key. And then all the inside closed ways, which are tagged with “building:part” ARE tagged with “height” key. So the inner building parts have the “height” key, while the main outer one does not have the “height” key.
An example is the Columbus Circle building in Manhattan:
http://www.openstreetmap.org/way/265343500
And one of its inner parts:
http://www.openstreetmap.org/way/292050938

On the other hand, I found examples where both the inner closed ways (tagged with “building:part”) have been tagged with “height”, and the main outer closed way has been tagged with “height” as well.
An example is the Commerzbank Tower in Frankfurt:
http://www.openstreetmap.org/way/183060777
And one of its inner parts:
http://www.openstreetmap.org/way/127956225

Which one of these two approaches is if not correct, then more desirable? Should the outer closed way be tagged with “height” as well if the inner building parts are already tagged with “height”?

Thank you for the reply, and I apologize if my question was not clear enough. If it wasn’t I can try to reformulate it.

You can see the 3D renderings of buildings on e.g. http://demo.f4map.com/ or osmbuildings.org

I believe that when the building parts fill up the complete building area there is no need to set the height on the building. If the parts do not add up to the building area, the height on building is needed.

Heights are mainly of use for 3D renderers, and 3D renderers really need the buildings, so it makes sense that they are on the building parts, where they exist.

The other thing to note is that it is quite difficult to get accurate heights by legitimate means so a lot of buildings won’t have heights, or will only have estimates.

(Whilst you could use laser range finders, they won’t cover taller buildings and I suspect you may attract the attention of the police, particularly in places with potential terrorism targets, or near flight paths. Most amateurs don’t have theodolites and it can be difficult to get far enough back from a building to get a good, surveyed, photograph to measure.)

Thank you for the detailed explanations both escada and hadw!
I owe you two at least a beer, for all the free shared knowledge.

This is exactly what made me confused escada. Thank you.
When you say: “If the parts do not add up to the building area”, it means that those parts do not cover 100% of the building area (foot print)? Or they do not cover most of the building area (say, 70 to 100%)?

Please refer to Simple 3D buildings specification.

If a building outline tagged with building=* has no building part (building:part=yes) inside it, set the height tag to the building outline. The building outline will be used by both 3D and 2D renderers in that case

If a building outline tagged with building=* has at least one building part (building:part=yes) inside it, set height and other related tags to the building parts. A 3D renderer will use the building parts and ignore the building outline. On contrary, a 2D renderer will use the building oultine and ignore the building parts.

Thank you for the link and explanation vvoovv!

Does this ‘at least one building part’ need to cover the whole area of building outline (100%), or not?
This is what confuses me at the moment.

The article you gave me states that:

But still I found examples where the area of the building outline is 100% covered with building parts, but still the building outline is tagged with “height” key.

OSM data is not perfect. So you found some “bad” data, which you might not discover by looking at the 3D views because they ignore it.

When I say fill up, I meant 100%. My interpretation is that you need to cover 100% of the building with building:parts as soon as you add one, otherwise you don’t know the height of the area outside that 1 part.

Understood. Thank you escada!

I am trying to understand the correct way of tagging, so that I do not make mistakes when I do tag the OSM elements.
For example, is it correct to remove the “height” key from the building outline of the Commerzbank Tower in Frankfurt, because its inner building parts cover 100% of the building outline area. And all of those inner building parts have “height” key.
?

Here is the building outline:
http://www.openstreetmap.org/way/183060777

And the preview of its inner building parts:

And the 3d preview:
http://demo.f4map.com/#lat=50.1121503&lon=8.6741504&zoom=17

In this case you need a closer look. The height value is used from f4map to render the building where no inner parts with building:part exist (the centre), e.g. osmbuildings.org ignores it.
Indeed a user added the height 6 month ago and “destroyed” the building in f4map because the centre is now as high as the top of the tower.

I think to improve this building the centre needs a new building:part or should be covered by the lowest building:part (http://www.openstreetmap.org/way/279967646), then the height on the outline is ignored by most 3D software. But that is also a lot of taggigng for the renderer.

BTW: You can use JOSM Plugin Kendzi3D to view OSM data in 3D and change this building local on your computer to get familiar with this kind of modelling.

From logical point of view a building outline building=* must be completely covered by building parts building:part=yes. Otherwise there will be some inconsistency between the building outline and the building parts.

It’s a good idea to set the height fot the building outline as well even if it contains building parts. Why is it good? For example, there are 2D maps with buildings that have a shade. The size of the shade is defined be the height of building outline. So use the height of the tallest point of the building for the height tag of the building outline.

By the way, since the exact height is known only for a small portion of buildings, it makes sense to set building:levels and building:min_level instead of or along with height and min_height.

I didn’t understand you, I apologize for that.
Both osmbuildings.org and f4map previews look the same to me, and they both ignore the outer building outline.
But I couldn’t rotate the view on osmbuildings.org, so maybe there is something I did not see on the other side of the building.

Is it correct to say that the ‘height’ key on the building outline should be removed due to all building parts covering 100% of the building outline, and each one of them already having the ‘height’ key?
So regardless if 3d renders will ignore this building outline, is it correct to say that the ‘height’ key should be removed from the building outline?

I already installed the Kendzi3D plugin, but I have some issues of it disregarding the ‘roof:color’ key. I wrote to Tomasz (the author) by sending him a private message, here on forum, but I never got a reply.

Anyhow, I still do not feel comfortable to edit something this complex as Commerzbank Tower.

I am just trying to learn the ‘building:part’ and ‘height’ tagging basics, so that I could at some point try to create a bit complex building.

Thank you vvoovv!

No need to remove the height tag from the building outline, since

Thank you vvoovv! Your reply came during the time I was writing my own. I should have edited it according to yours.
Sorry for all this mess.