# Multi-storey car park

Good morning!

I’m currently trying to get my head around how to tag a multi-storey car park, that has 2 levels, but only half of the parking is actually multi-storey. The other half (the upper right part and the bits south) are just ground-level. There is a single ramp that goes from the ground level to the upper floor, which I marked on the picture. This is what it looks like on bing:

My questions are:

1. Should I tag the whole thing as `parking=multi-storey`, even though it’s not exactly the same as a real multi-storey car park and only half of it has more than 1 level? In German, there’s a difference between a real multi-storey parking (Parkhaus) and one having only 1 or 2 storeys (Parkdeck), which is why it feels a bit wrong.
2. I’d like to add the service ways for this one. Given that the ways on the non-covered part are all `layer=0` (even the part that is covered, actually), how do I properly map the ones on the “roof”? I cannot set them `layer=1` without all the validators screaming “dude, this is a bridge, add bridge=yes”
3. And how would I actually map the part of the building where the ramp goes up to? My guess is `building=parking`, but wouldn’t the entire thing be a parking building, including the lower park level?

If there are any wiki pages I’ve missed, feel free to throw them into my direction.

Hello. In my opinion it is better to draw 2 separate parking features. As for the roads, if the highway on the roof intersect with the roads highway the building, I would just add layer=1 to the top roads (no bridge=* tag).

Nur den Teil, der zwei Eben hat, als Gebäude (Parkhaus), die ausschließlich ebenerdigen Flächen normal als Parkplatz.

1 Like

And the ways/roads on the building? Just `layer=1` and ignore complains about them not being a bridge? And the whole thing as `parking=multi-storey` or 3 parts, 2 with `parking=surface` and 1 with `parking=multi-storey`? Are there any examples I could look at? I found a lot of different approaches how to tag these, but they were all different and no one seems to have mapped the roads on the building, but since there are footways up/down, it would be nice if we could guide people to their parked car properly.

Please specify which validator shows errors? Corrected a little bit, checked in JOSM and in iD, no errors appear.

The line of the highway that goes inside the building must be divided at the intersection of the road and the building, while the extreme points near the road must also be part of the building polygon (I don’t know how to phrase it better). A line segment inside a building with the tags `highway=service` + `tunnel=building_passage` (see vertical line screenshot).

The line on the roof of the building must be tagged `highway=service` + `layer=1` (do not make shared nodes with the building).

Optionally, you can add tags `maxheight=*` to the line inside the building.

Thus, only the road that goes along the roof of the building should have a layer tag. In theory, everything should work fine in navigators.

Maybe using the `tunnel=building_passage` tag is not the best option and someone else will suggest a more correct one, but I don’t know another.

Everyone’s darling Osmose.

I would not use `tunnel=building_passage`, as this is not a building passage. There are no walls to the side of the way. Plus, if we work with layers, it’s not needed. Also:

Given your logic, the bottom ways should be `layer=0`, the building `layer=1` and the ways running on top of the building should be `layer=2`. This is what I was also expecting.

The problem is, that Osmose is pretty much right to complain:

I’m not much into indoor-tagging, but might `level=*` be used instead of `layer=*` for these kind of roads?

Sorry, didn’t read. Then I don’t know.

A similar question just popped up on Reddit: https://www.reddit.com/r/openstreetmap/comments/10apnvy/how_do_i_map_this_parking_lot_it_has_both_surface/

Update: I settled for the following:

1. The whole area is `parking=multi-storey`, because it’s a single parking amenity and in total, it has multiple levels
2. The part that is an actual multi-storey, is `building=parking` + `building:levels=1`
3. Roads on the ground floor are all `level=0`
4. Roads on the upper level are all `level=1`

I settled for `level=*`, because I found the following:

It’s not ideal, because the upper right area that is not covered now has `level=0` without being in the building. But enlarging the building to cover the upper right bit as well, and adding `building:part=yes` + `building:levels=0` seems kinda wrong to me. Technically speaking, it’s probably part of that building, but I’m not even sure of that.

Linters are all happy, routing hasn’t caught up yet, but I’ll keep an eye on it.

Update: Valhalla is perfectly able to route to both levels of the multi-storey car park, so this seems to be a good way to map this.

3 Likes