Simple Indoor Tagging

From OpenStreetMap Wiki
(Redirected from IndoorOSM 2.0)
Jump to navigation Jump to search

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.

Summary

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.

Use cases

Indoor maps or 3D indoor information can be used for various applications, e.g.

for public buildings.

The model / tagging schema

In the following section, the model is presented and described

Simple POI mapping

Illustration of 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).

Key Description Example value(s)
level=* the level the POI is located on level=3, level=-1

Building

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=*.

Key Description Example value(s)
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 area 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.

Illustration of the 4 basic indoor elements
Key Value Element Description
indoor=* room area Conventional room with walls. See also: key:room
indoor=* area area Area without walls
indoor=* wall way Individual (non-passable) wall element, when not already defined by indoor=room
indoor=* corridor area Unwalled connecting passage
indoor=* level area 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:

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
20090517-LaSuisse-Escalier.jpg
Stairs stairs=yes
indoor=room or indoor=area when there are no walls.
Set of steps (729815598).jpg
Escalators stairs=yes
conveying=yes
indoor=room or indoor=area when there are no walls.
Personenaufzug.jpg
Elevators highway=elevator
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)

Sketch for a slightly more complicated example using building:parts

All elements on the same level get a level tag or are optionally member of a level relation.

Key Description Example value(s)
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:

Key Description Example value(s)
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.

Key Description Example value(s)
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

Key Elements Description Example value(s)
level=* nodewayarea 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=* node 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:

Tagging examples

Location Building OpenStreetMap OpenLevelUp indoor= OpenIndoor
🇦🇷 Buenos Aires Museo Nacional de Bellas Artes (Fine Arts National Museum) View from outside Enter Enter Enter
🇦🇺 Sydney Central (railway station) View from outside Enter Enter Enter
🇦🇹 Vienna Südtiroler Platz View from outside Enter Enter Enter
🇨🇴 Bogotá Catedral Primada de Bogotá View from outside Enter Enter Enter
🇪🇨 Quito Quicentro Shopping View from outside Enter Enter Enter
🇫🇷 Paris Gare de l’Est Train Station View from outside Enter Enter Enter
🇫🇷 Paris Palais du Louvre View from outside Enter Enter Enter
🇫🇷 Paris Xème Gare du Nord View from outside Enter Enter Enter
🇫🇷 Paris XIIème Gare de Lyon View from outside Enter Enter Enter
🇫🇷 Paris Xvème ECE-Paris View from outside Enter Enter Enter
🇫🇷 Clermont Ferrand Centre Jaude View from outside Enter Enter Enter
🇫🇷 Lyon 3ème Lyon Part-Dieu View from outside Enter Enter Enter
🇫🇷 Thiais Centre Commercial Belle Épine View from outside Enter Enter Enter
🇫🇷 Noyelles-Godault Centre Commercial Aushopping Noyelles View from outside Enter Enter Enter
🇫🇷 Vélizy-Villacoublay Centre Commercial Régional Vélizy 2 View from outside Enter Enter Enter
🇩🇪 Aachen Aachen University Building 1380 View from outside Enter Enter Enter
🇩🇪 Munich Hauptbahnhof View from outside Enter Enter Enter
🇩🇪 Munich Karlsplatz (Stachus) View from outside Enter Enter Enter
🇩🇪 Munich Marienplatz View from outside Enter Enter Enter
🇩🇪 Berlin Berlin Central Station View from outside Enter Enter Enter
🇯🇵 Tokyo Ueno Station View from outside Enter Enter Enter
🇵🇦 Panamá City Multicentro Mall View from outside Enter Enter Enter
🇵🇭 Baguio City Abanao Square View from outside Enter Enter Enter
🇵🇱 Poznań Politechnika Poznańska Centrum Wykładowe View from outside Enter Enter Enter
🇷🇺 Moscow Okhotny Ryad (Охотный ряд) Mall View from outside Enter Enter Enter
🇪🇸 Pamplona Public University of Navarre (UPNA) Lecture Building View from outside Enter Enter Enter
🇬🇧 Sheffield Meadowhall View from outside Enter Enter Enter
🇺🇸 Los Angeles Union Station View from outside Enter Enter Enter
🇺🇸 Denver Denver Union Station View from outside Enter Enter Enter
🇺🇸 Northglenn, Colorado Northglenn High School View from outside Enter Enter Enter
🇺🇸 New York City Grand Central Terminal View from outside Enter Enter Enter