Simple Indoor Tagging
Simple Indoor Tagging is a tagging schema for Indoor Mapping. It is simple to use but still holistic to even cover complicated cases. A list of other/previous indoor tagging schemes can be found here. This document was created in 2014 by SimonPoole, Tordanik, Peda and Andi; and primarily written for mappers.
To sum up, these are the main characteristics of the model:
- mapping of indoor spaces including different floors (alias levels)
- existing OSM methodologies (nodes, ways, relations and keys) are utilized
Compatibility with Simple 3D buildings (S3DB) is an explicit goal of Simple Indoor Tagging (SIT). When combining SIT with S3DB, tags from both should be used at the same time.
Indoor maps or 3D indoor information can be used for various applications, e.g.
- Indoor navigation/routing: see the guidelines for pedestrian navigation
- Floor plans and 3D maps
- Public participation
- Emergency response
for public buildings.
The model / tagging schema
In the following section, the model is presented and described
Simple POI mapping
Mapping of objects in OSM works best when there is no upfront requirement to immediately add everything in great detail. Most of the time mapping progresses from rough to detailed to insane. To support this we need to define a simple POI mapping scheme that can be used together with the indoor schema to allow visualisation and routing even when detailed floor plans are not available.
One approach is to allow such nodes simply to be tagged with a "level" tag. To make this simple enough to consume we suggest that either on the building outline or on the building relation at min_level=* and max_level=* should be tagged.
In the simplest case this would require only the addition of 2 tags to the building polygon and level tags to the POIs for a rough visualisation to work (routing would not be supported without additional indoor elements).
|level=*||the level the POI is located on||level=3, level=-1|
To make it easy for data consumers to find buildings with indoor coverage we suggest the tags min_level=* and max_level=*. In some countries specific level values are not assigned, e.g. floor 13 in western countries or floor 4 in East Asia. To make these cases easier to map, we propose non_existent_levels=*.
|min_level=*||minimum indoor level||min_level=-1|
|max_level=*||maximum indoor level||max_level=14|
|non_existent_levels=*||optional: levels which don't exist e.g. for regional reasons||non_existent_levels=4;13|
Modelling the different indoor elements
The different indoor elements of a level also need to be mapped in OSM. Thereby, those parts with a covered area (i.e. rooms, stairways, corridors) are mapped as areas (closed ways or multipolygons).
We propose four basic indoor elements, with which everything can be modeled. The 5th value indoor=level is optional and not intended for rendering purposes, but for having a place to add additional information like a floor name.
|indoor=*||room||Conventional room with walls. See also: key:room|
|indoor=*||area||Area without walls|
|indoor=*||wall||Individual (non-passable) wall element, when not already defined by indoor=room|
|indoor=*||corridor||Unwalled connecting passage|
|indoor=*||level||optional: see below|
The individual areas share the same nodes where they share a wall in real world. The connection between a room and a corridor is done by a door=* node, again shared by both objects.
Note: Proposals for windows and doors are being developed separately. Therefore, we don't document any further details as part of Simple Indoor Tagging. Refer to:
- Proposed features/door
- Opening direction from F3DB#Tagging of door direction
- User:Tordanik/Window tagging
Modelling connections between different levels
Stairs and escalators are modeled the same way as above. They span multiple levels (level=-1-5) and are connected to indoor=corridors via a door=* node on each floor. door=no can be used to tag a connection to a corridor when no physical door is present.
A uniform staircase or classic elevators would lead to duplicate door nodes in the same way. The nodes are also at the same lat/long coordinates, only differing in the level value. For these cases we recommend to use only one door=* node with multiple level values or ranges, e.g. repeat_on=1;2 or repeat_on=1-5 (more see below). We recommend consumers of indoor data to duplicate these objects during preprocessing, using one level value for each.
|Photo||Use case||Proposed tagging|
indoor=room or indoor=area when there are no walls.
indoor=room or indoor=area when there are no walls.
indoor=room or in special cases indoor=area when there are no walls.
Use a semicolon to separate the levels covered by the stairs, escalator, or elevator, or define a level range. For example, level=0;1 or level=0-1 could be used on some stairs that connect levels 0 and 1. Stairs connecting levels 2 and 4 would be tagged level=2;3;4 or level=2-4 – regardless whether level 3 can be accessed from these stairs. Also see the section on #Multi-level features and repeated features.
Advanced modelling of the different levels (floors)
All elements on the same level get a level tag or are optionally member of a level relation.
|level=*||Describes on which level the element is (0 is normally the ground-level, -1 is the first basement etc.)||level=0, level=-2, level=3|
Local level notations per building should be reused. e.g. at Munich Airport, 3 is the ground level.
Reasonable and sensible keys and values which could be added to an optional level-outline (indoor=level) are mentioned in the following table:
|name=*||the name of the corresponding level||name=Ground floor|
|level:ref=*||the number or code of the level. This models the level numbering scheme as it is displayed in the building itself, e.g. on floor plans or elevator buttons, which may be different from the level=* value.||level:ref=K level:ref=E level:ref=3|
|height=*||the height of the level (with default unit meter)||height=4|
|level=*||describes which level number the current level has (0 is normally the ground-level, -1 is the first basement etc.)||level=0, level=-2, level=3|
Information about the indoor elements themselves (e.g. a name or type) are again attached as key-value pairs to the corresponding indoor element.
|level=*||MANDATORY the level the indoor element is located on||level=111, level=-1|
|name=*||the name of the indoor element (e.g. the room name)||name=Vesalius Aula, name=Audimax|
|ref=*||the ref of the indoor element (e.g. the room number)||ref=101, ref=01.15|
|height=*||individual height of an indoor element (default unit is meter)||height=3, height=2.5|
Multi-level features and repeated features
|level=*||in addition to the previously described cases, features spanning multiple levels (e.g. stairs, elevator shafts, high rooms) can be mapped by listing more than one level in the value||level=1;2, level=-1-5, level=-4--2|
|repeat_on=*||features that have identical copies on other floors can be mapped as a single node with this tag. This should be used sparingly and only if it is necessary (often the case with windows and elevator/staircase doors). The starting level is not included in this list, e.g. a feature with level="0" then repeat_on starts with "1".||repeat_on=1;3, repeat_on=0-6|
Additional example images
As the text above should stay consistent, and big changes should be coordinated with the original authors (see above), examples from third parties can be added here:
|🇦🇷 Buenos Aires||Museo Nacional de Bellas Artes (Fine Arts National Museum)|
|🇦🇺 Sydney||Central (railway station)|
|🇦🇹 Vienna||Südtiroler Platz|
|🇨🇴 Bogotá||Catedral Primada de Bogotá|
|🇪🇨 Quito||Quicentro Shopping|
|🇫🇷 Paris||Gare de l’Est Train Station|
|🇫🇷 Paris||Palais du Louvre|
|🇫🇷 Paris Xème||Gare du Nord|
|🇫🇷 Paris XIIème||Gare de Lyon|
|🇫🇷 Paris Xvème||ECE-Paris|
|🇫🇷 Clermont Ferrand||Centre Jaude|
|🇫🇷 Lyon 3ème||Lyon Part-Dieu|
|🇫🇷 Thiais||Centre Commercial Belle Épine|
|🇫🇷 Noyelles-Godault||Centre Commercial Aushopping Noyelles|
|🇫🇷 Vélizy-Villacoublay||Centre Commercial Régional Vélizy 2|
|🇩🇪 Aachen||Aachen University Building 1380|
|🇩🇪 Munich||Karlsplatz (Stachus)|
|🇩🇪 Berlin||Berlin Central Station|
|🇯🇵 Tokyo||Ueno Station|
|🇵🇦 Panamá City||Multicentro Mall|
|🇵🇭 Baguio City||Abanao Square|
|🇵🇱 Poznań||Politechnika Poznańska Centrum Wykładowe|
|🇷🇺 Moscow||Okhotny Ryad (Охотный ряд) Mall|
|🇪🇸 Pamplona||Public University of Navarre (UPNA) Lecture Building|
|🇺🇸 Los Angeles||Union Station|
|🇺🇸 Denver||Denver Union Station|
|🇺🇸 Northglenn, Colorado||Northglenn High School|
|🇺🇸 New York City||Grand Central Terminal|