Is Osmose right?

So once again, Osmose seems to have added a new check that keeps me go hmmm…

image

Obviously, I want to describe the roof of the building, but in order to do so, I’m referring to the underlying building. Should I convert all these to building:part=roof, leave out the building levels and min_levels and instead work with min_height, or this just Osmose nonsense? I tagged a lot of buildings like this and never had issues, but maybe there’s a more “correct” way of doing this?

Please refrain from the usual “Osmose is a pile of sh**” posts, as I’m seriously interested in understanding if my 3D-tagging should be improved or not.

3 Likes

It is incorrectly tagged in such case Way: 1089100900 | OpenStreetMap, so Osmose is right in this case (as it is in majority of other cases, actually. Although there are few where it is often incorrect, yes).

See https://wiki.openstreetmap.org/wiki/Key:building:min%20level - you tag building:levels and building:min_level on building:part on it (and/or height+min_height). Especially see this part:

If a building part does not start at the ground level, building:levels=* should include the number of skipped levels below the building part

In other words, you can’t have building:level equal to building:min_level. That would mean that this building part is thinner than a sheet of paper (0.000 mm high. That’s 0.00000 inch for imperial unit users out there :smile:). That is because building:level is always counting from the ground, and not from building:min_level.

So if that building part has e.g. height of 2 floors, then building:level = building:min_level + 2

Picture on that wiki makes it most clear, IMHO.

2 Likes

That would be true, if there was no roof. But since the roof isn’t included in building:levels

1 Like

If there is only roof and no levels, yeah I’d use building:type=roof (and prefer min_height / height instead if there indeed are no levels in that roof).

1 Like

So if that building part has e.g. height of 2 floors, then building:level = building:min_level + 2

how high are floors that don’t exist?

Hard to say, maybe about 0.05 of the level per concrete slab? Have to ask the architect :smile:
But as I’ve noted in that second post, I’d stay away from *:level* in there are no actual levels, and use non-ambiguous *:*height instead.

AFAIR, only full floors are considered building levels, so even if 90% of the floor isn’t a roof-level, you’d still tag it as such. So a 2-floor-house, 6m height with a 2m roof would still be considered to have 1 building:level and 1 roof:level. When I say building:min_level=1, it would still be a full meter of building level left. I would not tag these as building:part=roof, as no render would render this properly.

Hard to say, maybe about 0.05 of the level per concrete slab? Have to ask the architect :smile:
But as I’ve noted in that second post, I’d stay away from *:level* in there are no actual levels, and use non-ambiguous *:*height instead

as long as we don’t define the reference height (how and where to measure it), also *:height is likely ambiguous, unless the terrain is completely flat and at the same height as the street (if this should be part if the height definition that we will come up with), but I agree it is better than min_level which relates on invented level heights (height of inexistent levels)

I dug a little deeper, and the actual problem is this change to a JOSM validator. The more I think about it, the less it makes sense, especially because it doesn’t make exceptions for building:part=roof. If you have several roof-levels, you cannot give attributes to a specific one of them without using min_height/height instead, but that is only an addition to the levels, not a replacement. I hope they reverse this.