OpenStreetMap logo OpenStreetMap

champs-libres's Diary

Recent diary entries

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.

Location: Bomel, Namur, Wallonia, 5000, Belgium

For some months now, Champs-Libres has been working for the NMBS/SNCB, the national railway company of Belgium, for reusing OSM data of Belgian stations. The NMBS/SNCB has an interest in OSM data for improving some services to travelers regarding accessibility data, especially for bicycles. Have a look at the wiki page for more insights!

The first diary entry was about the basic data on the Belgian stations and platforms. In this second diary post, we’ll show how to map access to the railway platforms.

What is the access to a railway platform?

A traveler, with or without a bike, can walk to/leave a platform by several means of access. We’ll call these “access objects”, which can all be mapped in OSM. Here is how to map these access objects and how they are mapped in the Belgian train stations. We hereby focus on travelers walking through stations with their bikes.

Elevators

Elevators are represented in OSM with a single node (most of the time) and the tag highway=elevator. The following overpass query https://overpass-turbo.eu/s/1pm1 gives 90 elevators that are strictly to and from the platforms. They are mostly found in the larger train stations. However, we noticed that some elevators were not identified by this query because they were slightly outside of the platform area. This should be corrected in most cases.

An elevator in Gembloux station, a little bit too small for most bikes An elevator in Gembloux station, a little bit too small for most bikes

To specify that the elevator can be used with a bicycle or not, we should add the tag “bicycle=yes/no” (sometimes the value bicycle=dismount is preferred over bicycle=yes. It denotes that you can put your bike in the elevator but obviously you won’t ride your bike inside the elevator!).

We can also add tags that give precise information about the dimensions of the elevator cab (width, length) or of the elevator door, like in this example: https://www.openstreetmap.org/node/10837651647. For this, you can use a laser measurement device or a regular ruler.

Conveying, aka escalators

Conveying ramps, aka escalators are represented as a way and tagged with highway=steps + conveying=*. The query https://overpass-turbo.eu/s/1pm4 gives 198 conveying objects around the Belgian train platforms (within a distance of 10 m).

There is a debate among cyclists and train station managers if these access objects are well suited for travelers walking through a station with their bikes. Depending on the bike, this can help going from one level to another.

Steps

Steps are represented as a way and tagged with highway=steps. The query https://overpass-turbo.eu/s/1vLu gives 531 steps strictly connected to the platforms.

Steps in Ottignies station Steps in Ottignies station

Footways, direct access

Most of the time in small stations, platforms are directly accessible from the street without having to take some steps or elevators. The way to map this type of access is to draw a line connecting the platforms to the adjacent street, pedestrian area or the train station building. Then, this line should be tagged with highway=footway (sometimes the values “path” or “pedestrian” are used). The tag incline=* can also be added to denote that the footway is, well, inclined but without steps.

Initially, we thought that these types of access might be poorly mapped, especially for the small stations, but surprisingly, the query https://overpass-turbo.eu/s/1vLv gives 1109 footway accesses to the Belgian train platforms and all the train lines seem to be covered (there are some stations with missing accesses though).

Most of the time, it is OK to take your bike on these footways, but usually not riding your bike. For this reason the tag bicycle=dismount should be added on these ways.

Bicycle ramps

Last but not least, many steps are equipped with bicycle ramps (goulottes vélo en Français, fietsgoot in het Nederlands). These are tagged in OSM with the tag ramp:bicycle=* on a highway=steps object. The query https://overpass-turbo.eu/s/1vLw gives 108 bicycle ramps.

Fietsgoot in Namur station Fietsgoot in Namur station

Going further

In the next diary post, we’ll show that these access objects will need additional tags to be added before they can be properly used for routing or for our use case. In particular, the level tag is needed in multi-level stations. Even in small stations there is sometimes a passageway passing underneath the track or a bridge over the tracks that require a level tag.

How can you help?

Please check in your favourite train stations whether the access to the platforms are well-mapped. Footways might be missing in small ones. We probably also miss some information on bicycle ramps along steps. Even in big stations, the information might be missing, or simply outdated (works were done recently or are on-going in many stations).

Some tips for your survey: take pictures, draw a sketch of the station before or during the survey, note down the access by platforms. Aerial imagery won’t help you much in stations.

And please add the hashtags #nmbs or #sncb to your changeset comments ;-)

Location: Bomel, Namur, Wallonia, 5000, Belgium

Mapping railway stations accessibility - part 1

Posted by champs-libres on 27 May 2023 in English. Last updated on 7 June 2023.

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 travellers, especially regarding accessibility data, and especially for bicycles. Have a look at the wiki page for more insights!

A railway platform in Marbehan station

This first diary entry is about the basic data about the Belgian stations, the “stations” themselves and the railway platforms. For reusing OSM data, we need to have a complete and right information about these objects! Next posts will be on mapping the accessibility (steps, footways, elevators, …).

How a railway station is represented in OSM?

There is a long page on the OSM wiki describing how a railway station should be mapped. The French version of the page is even more complete, partly thanks to a long collaboration between OSM and the SNCF.

To summarize, we can say:

If we want a list of the stations, we can just consider the simplest way of representing stations that is the first one: the node tagged with railway=station.

Are all the stations in Belgium (well) mapped?

Considering the nodes railway=station, the answer is “yes”! All Belgian station are in OSM. You can have a look by running this overpass query: https://overpass-turbo.eu/s/1oY3 (open this link and click on “Run” - the first top left button, and you’ll see the stations on a map)

There are 580 nodes (and 6 ways) tagged with railway=station in Belgium. But we know from NMBS that there are actually 554 railway station in Belgium, so its seems there are even more stations in OSM! How is it possible?

Actually, there are “real” railway stations in Belgium not operated by NMBS: these are mainly old stations still operated for tourism, as the Chemin de fer du Bocq and the Chemin de fer des 3 vallées.

To really identify the NMBS stations, we should add the “operator=NBMS/SNCB” tag where it is missing.

How about mapping the platforms?

The railway platforms are the places where you actually take the train or step down from it. They are mapped with a way and tagged simply with railway=platform. A very important tag to add is the ref=*, which is the numbers of the platforms. The ref is always one or two numbers, that need to be separated by a semicolon “;”, e.g., ref=2;3.

A platform gives access to one or two tracks, typically the platform for the first track (ref=1) only gives access to this first track, while the others platforms (2;3, 4;5, …) give access to 2 tracks.

And how are mapped the train platforms in Belgium?

Mhm not so bad, but some railway platforms are missing, including for big stations! Here’s an overpass query for identifying the existing platforms: https://overpass-turbo.eu/s/1plL.

We managed to identify the missing platforms or where the ref is missing. Here’s a list of stations where there is at least one missing platforms and/or ref compared to NMBS data:

Alken, Antwerpen-Centraal, Archennes, Beauraing, Bellem, Bierges-Walibi, Bierset-Awans, Boitsfort, Leopoldsburg, Bruxelles-Chapelle, Bruxelles-Luxembourg, Bruxelles-Schuman, Callenelle, Carlsbourg, Ciney, Courriere, Couvin, Dolhain-Gileppe, Eupen, Flawinne, Florival, Gastuche, Genval, Glons, Gouvy, Halanzy, Hansbeke, Haren-Sud, Hergenrath, Herstal, Houyet, Jambes, Jette, La Louviere-Sud, Lobbes, Lodelinsart, Londerzeel, Louvain, Maria-Aalter, Merelbeke, Namur, Nivelles, Oostkamp, Ottignies, Philippeville, Pieton, Pont-A-Celles, Poperinge, Profondsart, Quevy, Rhisnes, Rivage, Rixensart, Rochefort-Jemelle, Ronet, Roeselare, Sclessin, Sint-Joris-Weert, Sint-Katelijne-Waver, Tilly, Verviers-Central, Watermael, Yvoir.

This list is quite long, but note that in many cases, only one platform is missing and is not used at the moment.

How can you help?

From this first post, we can see there are some corrections and improvements you can do on the stations and platforms.

  • add the “operator=NBMS/SNCB” tag on NMBS stations where this tag is missing. See https://overpass-turbo.eu/s/1vpO, but of course make sure the stations is a real NMBS stations still in use!
  • map the platforms where it is missing. You can also check if the platforms of your favourites stations are well-mapped!

And please add the hashtags #nmbs or #sncb to your changeset comments ;-)

Location: 1060, Saint-Gilles - Sint-Gillis, Brussels-Capital, Belgium