ProRail import

From OpenStreetMap Wiki
Jump to navigation Jump to search

ProRail, the Dutch rail infrastructure owner, has a lot of rail data available for OSM. This page gives an overview of the plans to implement this data in OSM. For more information, feel free to contact JJJWegdam.


Track import: Oct. 2015 - Jan. 2018

The very first changeset of the railway track import was changeset 34598315 at the end of 2015. At the moment of updating this page (2nd of January 2018), the last few changesets are being implemented. This concerns the eastern part of Zuid-Limburg, (in an area less than 10 by 10 kilometres).

January 2018 and on

Line numbers

In order to enable easy referencing, the Dutch railways are divided in so called geo codes. This is the largest scale of referencing and therefore a logical place to continue importing.


Underneath the geocode system, lies the system of milestones (Dutch: kilometrering). As the second referencing layer, this will also be the second imported reference system.

Turnout references

Railway turnouts have their own reference numbers. These are not unique throughout the country, but they are unique per geocode.

Train protection

Import chapters

Because the ProRail dataset covers quite a lot of different object categories (e.g. turnouts, milestones, catenaries, etc.), an approach in parts has been chosen. Each chapter will serve a certain object category. This will make the import less complex.

Railway track shapes

The core of the import consists of railway=rail ways. A .shp file with all railway track centrelines in the Netherlands, their speed limits and their references. All tags are according to existing standards (the reference tags have been mapped in the same format as the Dutch BAG import).

All ways: railway=rail

Varying: maxspeed=200

Varying: ref:ProRailID=2886018.0

Varying: ref:ProRailSpoortak=520_131R_0.6

All ways: source=ProRail

All ways: source:ProRail=Railmaps

All ways: source:date=2014-01-03

Existing OSM data

Before the import of the ProRail track shapes, OSM already had a quite good set of Dutch railway tracks. While spurs and shunting yards at some places were mapped poorly (i.e. missing crossovers), main tracks with passenger services were mapped with acceptable quality (the tags even more so).

This is of course good news for the situation untill the import, but the existing data made the import quite more complicated. All ways are replaced in this part of the import, which doesn’t only mean (careful) tag and relation merging. It also means the reconstruction of all connecting data: level crossings, bridges, tunnels, public transport stop nodes, turnout nodes, railway/railway crossing nodes, overhead wire voltage transitions, train protection system (signalling) system transitions, etc. All those

Recent railway projects

As shown above, the .shp file is dated at the start of 2014. Importing this data started at the end of 2015. It will be completed in the first quarter of 2017. This may cause some outdated data. Luckily, railway infrastructure is designed to have a relatively long lifespan. Therefore, the majority of imported shapefiles is up to date, even if it gets imported 3 years after source extraction. For the stretches of track that have been reconstructed in the mean time, other solutions for correct data are available. As stated in the Sources chapter of this page, we can also rely on the operators public WMS services. Especially ProRail Mapservices contains valueable up-to-date imagery. For the railway track shapes in particular, we can use the WMS service Geleidingssysteem_004 (WMS link). While there is a disclaimer on the update-policy, the service seems updated often enough to ensure correct changesets. Raiways that have been reconstructed after the third of January in 2013, will receive a custom source:date tag.


The Dutch railway network contains about 7000 turnouts. A minor remark: turnouts are also referred to as points or switches. The latter is incorrect, because a turnout consists of both a switch, a closing and a crossing. These turnouts come in various shapes, for example in different configurations (regular, double slip, etc.) and in different angles (1:9 for 40 km/h, 1:12 for 60 km/h, etc.). OpenRailwayMap’s tagging scheme provides us with an extensive tagging scheme, which allows for quite some turnout detailling. For now, the ambition is to map all turnouts with their reference number.

All nodes: railway=switch

All nodes: ref=235B;236A

All nodes: source=ProRail

All nodes: source:ProRail=ProRail mapservices WMS: Geleidingssysteem 004

Railway milestones

Dutch railway hectometre sign.png

The railway milestones are fairly simple . It will only contain nodes with four simple tags:

All nodes: railway=milestone

Varying: railway:position=45.5

All nodes: source=ProRail

All nodes: source:ProRail=Railmaps

Milestone overpass.PNG

Existing OSM data

Regarding existing milestones in the Netherlands: these have been searched for using overpass turbo. Luckily, only two existing railway milestones were found. These will be dealt with, with care.

Import approach

Taking into account that only two milestones exist in the Netherlands, at this moment, no [conflation] has to be dealt with. This leads to the conlusion that this slice of the ProRail import is suitable for a fully automatic import. The import will (after approval of all stakeholders) be carried out like the previous attempt: use JOSM's Opendata plugin to import the .shp file from ProRail's database, refurbish the tags by selecting all nodes and upload it to OSM.


Information about the signal import will appear as soon as the previous chapter has been finished.


The data sources overlap a bit, but both have data subsets that are not in the other source. The sources therefore will be treated seperately.


As the name suggests, OpenOV's data is as open as it can be. Dutch law stipulates that the data that ProRail, in this case, provides through OpenOV should be available to the public. It consists of several datasets, including contract areas, railway speed limits and railway platforms. The data gets updated every several months.

ProRail mapservices

ProRail mapservices is a public GIS service. It’s data can be used when the source is mentioned. It contains lots of usefull WMS services.


Railmaps application is ProRail's internal GIS service. To use the application, explicit permission is needed. The proposer of this import received such permission for both scientific research and OSM mapping. A part of the objects in Railmaps can be downloaded as shapefiles. ProRail gave permission to use the shapefiles for OSM.

Railmaps application data mostly gets updated within one month after execution of infrastructure changes.


How will you convert the .shp files to OSM xml?

By importing the .shp files in JOSM by using it's Opendata plugin.

How will you merge existing OSM data and ProRail data?

For simpler parts of the import (that contain data that is not yet widely present in OSM), like the Dutch railway milestones, I'll simply look for existing objects by using data filters (like xapi). The Dutch railway=rail ways though, will be completely replaced. This in order to ensure presence of all Dutch tracks in OSM, without any exception. Tags and relations from existing ways will be merged with the tags from the new ProRail shapes. Intersecting data (bridges, tunnels, level_crossings) will all be adjusted manually, aided by ProRail’s wms services.