Key:level

From OpenStreetMap Wiki
Jump to navigation Jump to search
Public-images-osm logo.svg level
MarekUserDefinedBuildingLevels.jpg
Description
Zero-based floor number of a feature (where 0 is the ground level and -1 is the basement). Show/edit corresponding data item.
Group: buildings
Used on these elements
may be used on nodesmay be used on waysmay be used on areas (and multipolygon relations)should not be used on relations (except multipolygon relations)
Useful combination
Status: de facto

The level=* key indicates the floor level where a feature (such as an amenity or a shop) is located in a building. See Simple Indoor Tagging for further information.

Add level:ref=* to specify how a floor is indicated in the multistory building itself (on elevator buttons, on landings, on mailboxes, on maps of the shops and amenities of the building, in parkade levels) where this differs from the level value. Example: use tags level=-1 and level:ref=B1 on the first basement car park if it is marked as such in the elevator. See section below for more details.

Highways (and other ways) can be also tagged with level=* when they are essentially bound to a floor of a building complex (such as multilevel parking buildings, railway stations or airports).

But for typical crossings of roads, waterways or railways via bridges or tunnels, layer=* should be used instead.

Roads or other ways passing through buildings should be marked with tunnel=building_passage. They should be only marked with level if they allow access to a specific level of the building.

Values

The value of the level=* is numerical and used to denote the vertical order of the floors. Usually, level=0 is the ground floor, level=1 the floor above it and basement floors start with level=-1.

level=0 corresponds here to the level with the letter D


If the building is partially buried, level 0 will correspond to the lowest level that has a part above ground in order to remain consistent with the Simple 3D Buildings specification's building:levels=* key.

It is not essential to have an exterior door for this level, the simple fact that part of the level is in the open air is enough to consider it as the ground floor.

Thus a shop=* located at level D will be tagged with level=0, an entrance=* located on the right of C will be tagged with level=1 and an amenity=* located in the fully underground basement E will be tagged with level=-1.

Level A is the first level in the roof but the tag level=* is used for all levels of the building therefore level A will be tagged with level=3.

A building may skip certain level numbers, such as floor 13 in some Western countries (mainly USA) or floors 4 and 14 in Chinese-speaking countries. In this case tag the building with non_existent_levels=* to prevent data consumers from miscounting features on floors above the skipped level.

Ground floor number

This key's zero-based numbering scheme is consistent with the floor numbering system used in many countries. However, it differs from the one-based numbering scheme used in many other countries for both wayfinding and addressing. There are also countries where both systems are in everyday use. Moreover, idiosyncratic numbering systems are used in individual buildings throughout the world, especially in large, complex buildings such as shopping malls, hospitals, and airports.

Countries by floor numbering scheme.      "Basement", "ground floor", "first floor"      "Basement", "first floor", "second floor"      Varies by language or region

In general, the level=* key ignores these distinctions in favor of the zero-based numbering scheme, because the level=* key was originally envisioned as a machine-readable key for 3D building rendering. Data consumers that support the Simple Indoor Tagging require values to be numeric and consecutive, even for basements and mezzanines that in reality are known by mnemonics such as "B", "B1", "G", "M", and "2M".

level=* values are largely zero-based even in many regions where the one-based numbering system is prevalent in everyday life. However, mappers overwhelmingly skip 0 in Kazakhstan, Korea and Mongolia, beyond any rate that could be explained by mappers treating 0 as an implicit default value:

level=* usage in one-based countries as of March 2022
Country High % for 0 indicates zero-based usage Low % for 0 and high % for 1 indicates one-based usage
0 0 (%) -1 -1 (%) 1 1 (%) B B (%) G G (%)
Belarus 1,695 25.48% 1,996 30.01% 1,598 24.02% 0 0.00% 0 0.00%
Canada 9,801 46.69% 2,024 9.64% 5,827 27.76% 0 0.00% 0 0.00%
Chile 152 18.29% 46 5.54% 310 37.30% 0 0.00% 0 0.00%
China 3,618 25.06% 1,680 11.64% 3,880 26.87% 0 0.00% 3 0.00%
Colombia 263 10.70% 1,568 63.79% 301 12.25% 0 0.00% 0 0.00%
Ecuador 186 28.88% 45 6.99% 226 35.09% 0 0.00% 0 0.00%
Finland 3,232 34.10% 742 7.83% 3,149 33.23% 0 0.00% 0 0.00%
Japan 21,437 41.76% 3,896 7.59% 11,430 22.27% 0 0.00% 0 0.00%
Kazakhstan 44 8.71% 31 6.14% 337 66.73% 0 0.00% 0 0.00%
Moldova 131 44.71% 7 2.39% 51 17.41% 0 0.00% 0 0.00%
Mongolia 12 6.59% 2 1.10% 71 39.01% 0 0.00% 0 0.00%
North Korea 2 1.43% 22 15.71% 95 67.86% 0 0.00% 0 0.00%
Norway 1,988 30.64% 963 14.84% 1,581 24.36% 0 0.00% 0 0.00%
Peru 756 30.14% 125 4.98% 968 38.60% 0 0.00% 0 0.00%
Russia 9,084 24.89% 5,455 14.95% 10,611 29.08% 1 0.00% 0 0.00%
South Korea 246 4.88% 366 7.26% 2,497 49.52% 0 0.00% 0 0.00%
Taiwan 1,081 18.64% 678 11.69% 1,854 31.97% 0 0.00% 0 0.00%
Ukraine 3,468 44.36% 749 9.58% 2,131 27.26% 0 0.00% 0 0.00%
United States 41,537 40.65% 7,432 7.27% 26,598 26.03% 4 0.00% 25 0.00%

Regardless of each country's local tagging convention, inexperienced mappers unaware of the convention may occasionally tag level=* based on the one-based system.[1] Some one-based tagging may have also been introduced because of a previous version of this article. Data consumers may be able to account for some discrepancies in floor numbering. For example, if some features inside a building have a level=* value greater than the building's building:levels=* value and none of the features in the building is tagged level=0, then a data consumer could decrement all the level=* values by one.

Level designations

Main article: Key:level:ref
Main article: Key:addr:floor

When a building uses non-numeric or otherwise non-standard floor designations, tag the individual features on a floor with level:ref=*, ideally in addition to level=* to prevent mishandling by data consumers. For example, the Siam Paragon mall in Bangkok consists of the following floors: B, G, M, 1, 2, 3, 4, 4A, and 5.[2]. A shop on level 4A can then be tagged with level:ref=4A.

Tagging shops exclusively with level:ref=* can be problematic because a data consumer cannot reliably determine the relative vertical order of each floor in the building. To consolidate this information, the Simple Indoor Tagging scheme suggests creating an outline for each level, tagged with indoor=level, adding both level=* and level:ref=* to it. This also works the other way round - if only level=* is defined on the individual shops.

There is also an ongoing discussion on usage of fractional values, e.g. level=0.5 or level=1.5 for mezzanine floors and staircases. See the proposals for more examples.

Multiple values

A shop located on 2 levels of a building will for example have the attributes: shop=* and level=0;1. The store is not necessarily accessible from the 2 levels, you can possibly add an entrance=* and/or a door=* with the attributes level=0 if the entrance is only from the ground floor.

If a room is repeated on multiple levels (it's a different room on another level but has identical dimensions and position in the building), draw a separate element for each room or use repeat_on=*.

Similarly a staircase could be tagged with level=-1;0 meaning that it connects those two levels.

Use a minus sign to specify a range of positive numbers with no missing values. E.g. the elevator of a 32-storey highrise with two basement levels will be tagged level=-2;-1; 0-32. This shows connectivity to multiple levels for indoor navigation.

Example

a question mark

This article or section contains questionable, contentious or controversial information. See the talk page for more information.
Unclear usage of non_existent_levels=* against level=* , levels:ref=* , and building:levels=* format and definition. Most uses are non_existent_levels=0 , and non_existent_levels=13 , as of 2024-12. Talk:Key:non existent levels#non_existent_levels_in_the_US
A typical elevator in the United States (level=-2;-1;0;0.5;1-11;13), (level:ref=B2;B;1;M;2-12;14)
Button label level=* level:ref=*
14 13 14
the building skips 13,
add non_existent_levels=12 to the building.
12 11 12
3 2 3
2 1 2
M 0.5 M
☆1 0 1
B -1 B
B2 -2 B2

See also

  • layer=* - Used to mark the vertical relationship between two crossing or overlapping features, e.g. bridges and tunnels at highway or railway junctions.
  • building:levels=* - The number of above ground levels in a building, not including the levels in the roof and in the basement
  • roof:levels=* - The number of levels in the roof
  • building:levels:underground=* - The number of basement levels
  • addr:floor=* - The floor an apartment/flat is located.
  • repeat_on=* - For features that repeat on several levels / floors where similar copies of a feature can be found at the same position.
  • tunnel=building_passage - A passage through a building, normally as an archway or overhang.
  • level:ref=* - For the marked floor number where this differs from the level value.
  • Indoor Mapping
  • Proposal:Level

References