For some months now, Champs-Libres is working for NMBS/SNCB, the national railway company of Belgium, for reusing OSM data from Belgian stations. NMBS/SNCB has an interest in OSM data for improving some services to travelers regarding accessibility data, and especially for bicycles. Have a look at the wiki page for more insights!
The first diary entry was about the basic data about the Belgian stations and platforms and the second diary entry was about mapping access (steps, elevators, bicycle ramps, etc.) to the railway platforms. Here, we’ll deep into more advanced mapping of railway and access objects by looking at the “level” tag.
Why the “level” tag is important
Stations are most of the time built on several levels. Even small rural stations often have an underground passage or a bridge above the tracks to cross the railways. Whenever you have levels in a railway station, the level=* tag should be added on most of the objects. This is needed for several reasons:
- for pedestrian routing: automatic routing algorithm need to be aware of the level, especially the level of indoor rooms and railway platforms. Routing along ways is normally ensured by the continuity of the ways, but when it comes to routing through surface, level information is needed.
- for data management: large railway stations are probably one of the hardest OSM feature to map. An appropriate information on the levels will help others OSM contributors to filter the features by level, and to simply figure out what is the structure of the station.
- for our use case here with NMBS/SNCB: we want to count the accessibility objects by platforms, but in multi-level stations, we need to filter out accessibility objects that does not start or arrive at the platforms. Let’s see this with an example: these steps in Namur station goes from the area above the tracks (at level 1) to the bus station which is located at the top of the Namur station building (level 2). It has nothing to do with the railway platforms (at level 0). However, these steps cross several platforms, so if we make a spatial intersection without accounting for the levels, we’ll have a false positive. Note that access objects are not necessarily mapped by connecting the platforms edges, so spatial intersection is needed.
How to add the level tag?
Simply add the level=* tag to the objects that intersect with each others in a station: the railway=platform and the “access objects” that goes (or not) to the platforms: footways, steps, elevators, escalators (conveying=*).
Obviously, for features that goes from a level to another, we add at least 2 values of level, separated by a “;”: it means that some steps, for instance, goes from level -1 to level 0 (level=-1;0
).
For editing OSM data with levels, I’d advice to use JOSM as editor, simply because you can filter easily by levels in JOSM. You may also try https://osminedit.pavie.info/ to edit and look at the data level by level. After your edits, you can check the results on specific OSM renderer by level, such as https://openlevelup.net or https://indoorequal.org/.
How you can help?
There are a lot of footways in Belgian stations with a layer tag but without a level one : https://overpass-turbo.eu/s/1vPD. The layer=* tag is useful mainly for cartographic rendering, but it is not used for mapping the “z” dimension. On those footways and platforms, the level information should be added.
You can also check all the “accessibility objects” (have a look at the previous diary post if you haven’t!) to see if the level information is there and accurate. Also, this actually apply to ALL objects. As soon as you put a level tag on a surface, all objects (bins, information board, etc.) that intersect this area should also have a level tag.