From OpenStreetMap Wiki
< JOSM‎ | Plugins
Jump to navigation Jump to search
indoorhelper icon indoorhelper
a plug-in to create, validate and view indoor maps correctly

IndoorHelper is a JOSM plug-in to create, validate and view indoor maps correctly. It helps you to stay at one tagging scheme (Simple Indoor Tagging) and makes it easy to tag indoor objects a fast way.


This plugin helps you mapping indoor objects using the Simple Indoor Tagging scheme.
What is the plugin doing?

  • makes it possible to tag objects with pressing just one button (includes automatically tagging of level=*-tag)
  • guarantees to stay at Simple Indoor Tagging scheme
  • makes it possible to create easy multipolygons in a fast way
  • checks if objects always have a level=*-tag
  • provides a MapCSS


After the installation the plugin appears in the sidebar of JOSM. To be able to use all plugin features it is necessary to do a short setup first before start mapping! This plugin uses different JOSM functionality for example the AutoFilter. The AutoFilter makes it possible to only show objects with a specific level=*-tag on layer what is necessary to map objects with more than one floor (alias level).

How to start


To be able to use all features do the setup first!

  1. use Piclayer plugin to fit indoor maps into existing OpenStreetMap data or GPS-tracks (recommendation). Make sure the mapping is done on a layer other than where the image is shown (two layers are needed).
  2. draw the first object (of a new level) with using the Insert level button (fully description below). Using the Insert level button makes sure the AutoFilter will work with your OpenStreetMap data. This step must be repeated with every new level you want to map!


The mapping works as follows:

  1. select the current working level with using AutoFilter button (if not already selected)
  2. draw the object
  3. choose a tag combination in the plugin
  4. make sure the object is still selected and press the apply-button. All tags should be insert to the object tag-list, also the level-tag (if not deactivated). To deactivate the level tagging select the checkbox next the working level field.

The recommended order of editing is:

  1. rooms, corridors, stairways, elevators and individual areas
  2. POIs (door/entrance)
  3. walls and windows

Why using this order?

Mapped object with and without walls.

This order provides a "layer-mapping"-scheme what means objects are mapped on top of each other. Rooms, corridors, stairs or elevators are on the bottom. Walls and windows are put above. Now, if walls and windows are filtered (not shown in layer), the basic objects (rooms etc.) fill out the whole floor-space.

Tips and most done mistakes

Most done mistakes

  • door or entry nodes are not connected to a room, corridor etc. Always connect a door or entry node a basic object.
  • door or entry nodes are connected to a wall. Do not map a wall object where a door or entry node should be. Interrupt the wall for a door or entry node.
  • freestanding walls are not part of a relation. Map freestanding walls as a multipolygon with role= inner.


  • if an object is repeated on another level use repeat_on=*-tag (description see below). It is possible to map the object only once. If the repeat_on=*-tag is used the right way the plugin helps you to still see the object on every working level you defined in the tag!
  • stairways should be tagged with incline=*
  • for more information how to tag specific objects have a look at Presets in JOSM editor!

Plugin parts

Level Bar

Level Bar - easy tagging of levelname and automatically tagging of level value.
Field/Button Action Description
Level name To add a name label to the level Insert the optional level name with using the text field. Afterwards confirm with the apply button. The object will be tagged with level_name=*.
Working level A dynamic field which shows you the current working level This field always shows you the current working level you selected with using the AutoFilter buttons. This function is not working without the AutoFilter function. To makes sure the AutoFilter buttons appear on screen (left upper corner) use the Insert level button. The following status can be shown in the field:
  • number : the current working level (just objects with this level tag or repeat_on tag (see below) are shown on screen).
  • NONE : no level is selected or the AutoFilter is not active now.
checkbox To deactivate the automatic level tagging If the checkbox is not ticked the current working level (shown on the left, Working level) will be automatically tagged to the object after pushing the apply button. To deactivate this function tick the checkbox. No more level tags will be related. The object will (not) be tagged with level=*.

About repeat_on=*:

  • tells if an object is connecting one or more level via stairways, elevators etc. (see also Simple Indoor Tagging)
  • to simplify the mapping the plug-in makes it possible to map an object like stairways, elevators etc. ones (which are actually needs to be mapped on each level again) and tag it via the repeat_on field. Now the selected working level will also consider objects with a repeat_on=* -tag what means objects which are tagged with another level=* -tag but also with a repeat_on=* -tag including the current working level will also be shown on screen.

Insert Level Button

The Insert level button needs to be used if a new level wants to be added.

How to add:

Step Description
1 Push the Insert level button to open the level selector window.
2 Insert the new level number (example: 1, -4, 0).
3 Push the OK button to close the window. Automatic switch to drawing action follows.
4 Draw the object and press the spacebar to finish. Now the object will be automatically tagged with the new level tag. Also the AutoFilter buttons should appear on screen (left upper corner). From now on the normal mapping actions (left sidebar) can be used.

Tagging Bar

Tagging Bar - fast tagging with given object selection and individual name, ref and repeat_on textfield.

This panel makes it easy to tag objects with popular tags on a fast way.

Field/Dropdown Menu Description
Object The dropdown menu shows you some optional tags which are often used during indoor mapping. If no object tagging is requested select NONE.

The following will be tagged:

Tag Tagging background Usable with
CONCRETE_WALL indoor=wall, material=concrete closed wayway
DOOR_PRIVATE door=yes, access=private Mf node.svgway
DOOR_PUBLIC door=yes, access=yes Mf node.svgway
ELEVATOR highway=elevator closed wayMf node.svg
ENTRANCE entrance=yes Mf node.svgway
ACCESS_PRIVATE access=private Mf node.svgway
ACCESS_PUBLIC access=yes Mf node.svgway
ENTRANCE_EXIT_ONLY entrance=exit Mf node.svgclosed way
TOILET_FEMALE indoor=room, amenity=toilets, female=yes closed way
TOILET_MALE indoor=room, amenity=toilets, male=yes closed way
GLASS_WALL indoor=wall, material=glass closed wayway
ROOM indoor=room closed way
STEPS highway=steps closed way
CORRIDOR indoor=corridor closed way
BENCH amenity=bench closed wayMf node.svg
AREA indoor=area closed wayMf node.svg
NONE no tagging of indoor objects
Name Tags the object with a name tag (example: ROOM - classroom). The object will be tagged like name=classroom.
Reference Tags the object with a reference tag (example: classroom - R025). The object will be tagged like ref=R025.
Repeat_on Tags the level area the object contains (example: elevator - 3-4, what means the elevator is starting at level 2 and is repeated till level 4. Also possible -3-6 or -3--1).

The object will be tagged like repeat_on=3-4. Also see Simple Indoor Tagging.

Preset Buttons

On the right side of the panel you can find the preset button section. These buttons are created depending on what objects you are using the most. To use these presets, just draw an object and click on the preset you would like to apply.

Multipolygon Bar

Multipolygon Bar - to create simply multipolygons on fast way.

Caution: this function is to add simple multipolygon objects only.

The recommended order of editing is:

  1. add outline member with outer button
  2. add inner member with inner button.

How to add:

Step Description
1 Push the outer button to select the drawing action.
2 Draw the object and press the spacebar to add the multipolygon with role: outer.
3 Push the inner button to select the drawing action.
4 Draw the object and press the spacebar to finish the drawing. After that select the "outer"-object you want to add the "inner"-object to. If selected push enter to add the object with role: inner.

If you want to add more than one "inner"-object skip step 1,2 and restart at step 3. To deactivate the multipolygon function of the plug-in just tick the checkbox next to the inner button.


How to import BIM data view this GIF

BIM import icon.png
The plugin includes an import functionality for .ifc (BIM) files. To import a new .ifc add a new layer and use the BIM import button (File -> Import BIM File). Please note that the import functionality is in beta state! For more information about how to translate BIM objects into OSM objects see Wiki Building Information Modeling.

Data Scheme

The data scheme which underlies the plug-in is based on the Simple Indoor Tagging approach but has some differences or improvements. It is completely based on tags and is therefore easy to understand. To hold it simple the most important objects are directly tagged with indoor=*. To make sure the tagging is always on Simple Indoor Tagging standards specific objects will be automatically tagged with needed tag-combinations (example: TOILET_FEMALE : indoor=room, amenity=toilets, female=yes). For more information see Tagging Bar.

Data Validation

MapCSS Rendertheme

Rendering of the MapCSS rendertheme in low, mid and high zoom levels

The first way of data validation is the MapCSS rendertheme which comes with the plug-in. It is installed during the first start. Thus the user does not have to care about it and has a instant graphical validation of the mapped data.

The rendertheme uses the zoomlevel filtering of MapCSS to show the data in different ways depending on the zoom level of JOSM. For example in a high zoom level every detail is shown and in a low zoom levels rooms and POIs are hidden.

JOSM Validator

The other method which can be used to validate the data is the JOSM validator file which is also installed with the plug-in.

The validator alarms the user if following mapping errors occur:

  • way or node without the tag level=*
  • properties which should be only assigned to ways are assigned to nodes
  • properties which should be only assigned to nodes are assigned to ways

The validation check is done every time when the user clicks the "apply"-button or a preset button.


  • spacebar : finish drawing of objects created via the plugin
  • enter: Confirm the selected multipolygon to edit an inner-role member

(For further information see Multipolygon Bar, Insert Level Button)


  • It's just a graphical representation
    • therefore not suited for routing
  • It is no usable standard (yet)


Created by User:Erigrus

Maintainer: User:Rebsc

Source Code: JOSM/indoorhelper

Projects: JOSM/indoorhelper/projects

See also

  • [1] - JOSM HelpBrowser, short user instruction.