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!
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 (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.
In JOSM, you can easily add the OpenStreetMap Map as a background. Open Imagery menu and select “OpenStreetMap Carto”:
Then, you will see OpenStreetMap Map as a 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:
{
"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:
- The
indoor
property is mandatory. Possible values are listed in the following section. - 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. - 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=*
- useful and important facilities for visitors (OSM wiki - Key:amenity)shop=*
- a shop (OSM wiki - Key:shop)room=*
- room inside a building (OSM wiki - Key:room)
Amenity property
-
toilets
-
smoking_area
-
telephone
-
post_office
-
drinking_water
-
cash_register
-
bench
-
reception_desk
-
restaurant
-
bar
-
cafe
-
fast_food
-
pharmacy
-
doctors
-
place_of_worship
-
parking
-
lounge
-
food_court
-
entertainment
-
car_rental
-
bureau_de_change
-
bank
-
atm
Shop property
- Default value
-
alcohol
-
art
-
bakery
-
beauty
-
clothes
-
convinience_store
-
cosmetics
-
department_store
-
duty_free
-
electronics
-
fashion_accessories
-
flight_ticket
-
florist
-
gift
-
interior_decoration
-
jewelry
-
mobile
-
newsagent
-
shoes
-
supermarket
-
travel_agency
-
underwear
Room property
- Default value
-
administration
-
class
-
dining
-
kitchen
-
laboratory
-
meeting
-
office
-
server
-
shower
-
storage
-
technical
-
terrace
Upload the GeoJSON
Once your GeoJSON file is ready and complies with all the rules, follow these three steps on the Woosmap Console website:
- Before creating a venue, ensure that the Map API and Indoor API are enabled in the Product tab:
- Next, open the venue tab and click on the “New Venue” button:
- Finally, define a venue identifier and name, and then upload the GeoJSON file:
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:
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.
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.
{
"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:
{
"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:
- Elevator - Add
highway=elevator
property. - Stairs - Add
highway=steps
property. - Escalator - Add
highway=steps
andconveying=forward
properties.
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:
"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.