Create your own indoor venue

This guide will explain how to digitize an indoor venue. Feel free to contact us if you need some clarification. We’re here to assist you!

  1. Overview
  2. Software
  3. Prerequisites
  4. Point of Interest
  5. Upload the GeoJSON
  6. Go further with the routing graph

Overview

Woosmap Indoor consists of API’s and tools to configure/view maps for an indoor environment. These maps are a digital representation of cartographical drawings, and they have the usual and familiar features of tilt, rotate, zoom and 2-D extrusion.

The elements on the maps (defined as ‘Points of Interest’ or ‘POI’s) are defined during the digitization and are searchable. The maps also contain defined pathways that act as a network or mesh, through which user-friendly walkways and interfloor joins are visible.

To summarise, Woosmap Indoor contains and provides all the familiar features of major outdoor map providers to enable a seamless user experience for indoor maps.

Software

To utilize Woosmap Indoor, you need to upload a GeoJSON file to the Woosmap platform using the Woosmap Console (refer to the Upload the GeoJSON file section for instructions).

To create this GeoJSON file, we recommend using JOSM: https://josm.openstreetmap.de/

JOSM Logo

JOSM (Java OpenStreetMap editor) is a free software desktop editing tool for OpenStreetMap geodata created in Java. Some notable features of JOSM are importing GPX files (GPS tracks), working with aerial imagery, support for multiple cartographic projections, layers, relations editing, data validation tools, data filtering, presets and rendering styles. Many additional features are available through plugins.

An indoor map rendered on top of the Woosmap Map.

Since your indoor map will be displayed on the Woosmap Map, we recommend using OpenStreetMap data for georeferencing your features.

Indoor map on top of Woosmap Map

In JOSM, you can easily add the OpenStreetMap Map as a background. Open Imagery menu and select “OpenStreetMap Carto”: JOSM - Using OSM Map as background

Then, you will see OpenStreetMap Map as a background: JOSM - Using OSM Map as background

Prerequisites

GeoJSON format

GeoJSON is an open standard format designed for representing simple geographical features. It is based on the JSON format. The GeoJSON file for your indoor venue will consist of multiple features.

Example of feature:

JSON
        {
  "type": "Feature",
  "properties": {
    "indoor": "yes",
    "level": "0",
    "amenity": "toilets",
    "name": "Building entrance",
    "name:fr": "Entrée du batiment"
  },
  "geometry": {
    "type": "Point",
    "coordinates": [3.92162187466, 43.60666618464]
  }
}

    

All features are composed of geospatial data (an array of lat/lng coordinates) and a list of properties.

Woosmap Indoor specifities

To be processed by the Woosmap platform, certain rules regarding properties must be strictly followed:

  1. The indoor property is mandatory. Possible values are listed in the following section.
  2. The level property is mandatory and must be an integer. It links the feature to a specific floor level. Multiple integers (separated by a semicolon) are allowed for floor connectors like stairs or elevators.
  3. The ref property is optional but must be unique. The reference is a functional identifier that you define. In the same venue, two features cannot have the same reference.

Using the indoor property for defining the type of feature

A part of the styling of the feature is determined by the value you assign to the indoor property.

Floor level boundaries - indoor = level

Create a polygon to define boundaries of a floor level.

Room with walls - indoor = room

Create multiple rooms inside or outside the building.

Area without walls - indoor = area

Create an area like a hall or a zone. An area is not considered an obstacle and can be crossed.

Other features - indoor = yes

All other features, such as point features or routing graph features.

Point of Interest

A feature with a specified name is categorized as a Point of Interest (POI). This classification enables the feature to be searchable through the Indoor Search API, and its functional data can be updated in the Woosmap Console.

To designate a feature as a POI, simply include a name property.

Apply a type to your POI

In addition to the indoor property, assigning a type to a POI gives it a style identity, complete with an icon and a fill color. The type definition is derived from the tagging system used by the OpenStreetMap community, with most types belonging to one of these three main families:

Amenity property

Shop property

Room property

Upload the GeoJSON

Once your GeoJSON file is ready and complies with all the rules, follow these three steps on the Woosmap Console website:

  1. Before creating a venue, ensure that the Map API and Indoor API are enabled in the Product tab: Woosmap Console - Enable product
  2. Next, open the venue tab and click on the “New Venue” button: Woosmap Console - Venue view
  3. Finally, define a venue identifier and name, and then upload the GeoJSON file:Woosmap Console - Create a venue

Your venue is now ready to be finalized in the Woosmap Console, where you can define the type and set all functional data for each POI:

Woosmap Console - Edit a POI

Go further with the routing graph

Pathways

Marking of pathways should preferably be done after all POI’s have been added. Before marking pathways, confirm the walkable areas in the venue, the entrances and the directions (one-way or both ways).

Unless otherwise specified, simple pathways are preferred over complicated meshes and networks because it may result in zig-zag pathways during navigation. The pathways should touch (connect to) each POI. If the POI is an extremely irregular shape (such as a crescent, or an elongated polygon, then it is advised to extend the pathway inside the POI. For most POI’s, just touching the path to the POI is sufficient.

This is an example of pathway network in a Paris railway station. Blue lines represent the full pathway network.

Routing example - Gare du Nord

The Woosmap Console doesn’t allow you to create/edit the routing graph; you must manage it on JOSM.

Property

To do a pathway feature, add the highway=footway property in addition to the indoor and the level properties.

Use oneway=yes property for making it as a single way path. The order of coordinates in geometry.coordinates array defines the direction of traffic.

Example

In the following example, the pathway contains 4 nodes.

JSON
        {
    "type": "Feature",
    "properties": {
        "highway": "footway",
        "level": "0",
        "indoor": "yes"
    },
    "geometry": {
        "type": "LineString",
        "coordinates": [
            [
                3.92187350000,
                43.60632470000
            ],
            [
                3.92180790000,
                43.60638680000
            ],
            [
                3.92155344244,
                43.60662792236
            ],
            [
                3.92160938651,
                43.60665920219
            ],
            [
                3.92162187466,
                43.60666618464
            ]
        ]
    }
}

    

A pathway should not be a closed way. Ensure that a node is not used twice for the same feature.

Floor level connectors

An indoor venue could include multiple floor levels and they are all connected with floor level connectors. For these special features, the level property is an array of integer values separated by a semicolon:

JSON
        {
    "type": "Feature",
    "properties": {
        "level": "0;3",
        "highway": "steps",
        "indoor": "yes"
    },
    "geometry": {
        "type": "Point",
        "coordinates": [
            3.92176099159,
            43.60670179445
        ]
    }
}

    

There are 3 types of floor level connectors:

Routing profile

Some paths are not suitable for people with disabilities, in this case, a routing profile property has to be added to the path:

JSON
        "properties": {
    "level": "0;3",
    "highway": "steps",
    "indoor": "yes",
    "woosmap:routingprofile": "valid"
}

    

You can also use the woosmap:routingprofile property to restrict access to a path to a category of user (security employee, premium visitors, …). The expected value is an array of routing profile names separated by a semicolon.

It is advisable to include the woosmap:routingprofile = valid property to handle routes that may not be suitable for people with disabilities. Conversely, if you wish to limit a route for people with disabilities, you must use the woosmap:routingprofile = wheelchair property.

Was this article helpful?
Have more questions? Submit a request