OSRD at Dreiländer Hack in Wien

Dreiländer hack, the annual meeting of German-speaking railway companies… but not only!

On 29 and 30 June, the “Dreiländer hack” (the hackathon of the three countries) was held in Wien (Austria). Organised by DB (Germany), ÖBB (Austria) and SBB (Switzerland), this is an annual event dedicated to collaboration on shared railway-related challenges.

We were delighted to be invited to take part thanks to the OpenRail association, and this year’s theme being “Open Railways”, it would have been hard to refuse!

24 hours to work together on a topic of common interest

The 150 participants were divided into 16 working groups on a wide variety of topics such as:

  • Imagining a simple interface for ordering train paths (an important subject for the future of OSRD);
  • Offering passenger information adapted to different disabilities;
  • Optimizing the prioritisation of trains at junctions according to the number of passengers on board and on the platform (Motis project);
  • Automatically identifying energy-consuming trains in storage;
  • Calculating forecast maintenance dates from a historical database for each train component;
  • Detecting speed measurement and GPS positioning errors on track inspection trains;
  • Optimizing maintenance work to limit lost capacity;
  • Facilitating passenger information with a GPT chatbot;
  • Designing an easy-to-use display and ticketing interface for night trains across Europe.

Challenge proposal by OSRD

The challenge proposed by OSRD was to consolidate the railway data in OpenStreetMap, an open & collaborative database that we use as a source for railway infrastructure in Europe.

The objective was to develop an algorithm to identify 5 types of probable errors in the data:

Disconnected tracks

A toy train with wooden tracks separated by a space

Suspicious switches

A toy train where an extra wooden track has been added to a switch

Stations apart from tracks

A toy train on wooden tracks and a station drawn on a post-it note. A question mark is drawn between the two.

Weird angles

A toy train with wooden tracks at a 60° angle

Missing gauge info

A wooden toy train. A measuring ruler is placed on the tracks, with a post-it note with a question mark.

The subject was of interest and we formed a team of 10 people divided between the four participating companies. After a presentation of the challenge and of the OpenStreetMap data model, we looked for existing tools and chose to use Osmose, an open source application for detecting and displaying potential errors in OSM. We then split up to work on the 5 types of errors.

The 10 members of the team pose in front of a decorated container wall reading “Es ist möglich”.

From left to right: Christoph (DB), Klara (ÖBB), Frederik (SBB), Carl (SBB), Julius (DB), Jennifer (DB), Daniel (ÖBB), Céline (SNCF), Max (DB), Tristram (SNCF).


After 24 hours of work, the result is an interactive map showing the various errors (click on the pictograms to show error details). You can find all the code that was produced on the OpenRail association’s GitHub.

We did not manage to integrate our analysers into Osmose within the allotted time, but that remains the target on which we’re going to continue working, so that all OpenStreetMap contributors can easily correct errors in railway data!

DGEX Solutions Forum

DGEX Solutions Forum

Here’s an extract from Loïc Hamelin’s talk at the DGEX Solutions forum, on the subject of search for last-minute train slots (STDCM).

First of all, what is a train path?

It’s the reservation of space/time on the network, by railway undertakings (RU) such as SNCF Voyageurs. These reservations are generally made years in advance (A-3). RUs can also make emergency requests for train paths (called last-minute paths), from A-1 to D-day. These requests are currently managed by ticket offices, and the paths are traced by hand. There is therefore a risk of human error, and requests are sometimes processed over several days.

What do we offer?

The OSRD software, in addition to featuring a rail simulator for timetable planning, will also enable last-minute path requests to be processed automatically! With just a few clicks, you’ll be able to submit a last-minute path request and get a response in a matter of seconds (3 minutes at most)!

If you’re interested in the #osrd project, please visit the osrd website and the GitHub repo, and the project is #opensource.

Morgane Senejko’s LinkedIn post


OpenStreetMap and open data talk at Fosdem 2023

Hi ! My name is Céline, and I am on a mission to bring more open data into OSRD. To do so, I searched open data that can fit OSRD’s needs in every country of the European Union (+ Norway, United Kingdom and Switzerland).

I have presented the main results of this study during a talk at the FOSDEM 2023 meeting, and you can see the replay on their website.

In this post I will go into details of the methodology I followed, feel free to contact me if you have any remarks or question :-)

Data download

You can download the detailed data I created here. Update 11/03/23 : get the updated file here.

  • Added open data sources links for : Estonia, Czechia, Poland, Slovakia
  • Added license detail pour : Sweden
  • Added information on real-time position of trains for : Finland Special thanks to Christoph Breit & everyone that contributed by sending me links & info

The file is composed of three tabs:

  • EU-sources: links to download each country’s open data & info on license compatibility
  • EU-data: data used to compare total track length between countries and source and to compute the “usability indicator”
  • EU-epsg: EPSG code used for reprojecting geographical data for each country

Compare total track length

Calculate track length from open data

  • Look for open data sources

  • If a source is found, look for data license

  • Check license compatibility with OpenStreetMap using OSM wiki and this blog post

  • Download open data

  • Load data into QGIS and reproject it based on the EU-epsg tab

  • Calculate a new field using the following formula to get the length of each track in kilometers:

      "length" = $length / 1000 
  • Report total length using the “Basic Statistics for Fields” tool

Learn more about Inspire data model

Calculate track length for OpenStreetMap data

  • Download last OSM export from https://download.geofabrik.de/europe.html

  • Load lines data into QGIS

  • Select data using the “other_tags” field to select railway network:

      "other_tags" like '%"railway"=>"rail"%'
      or "other_tags" like '%"railway"=>"narrow_gauge"%'
      or "other_tags" like '%"railway"=>"light_rail"%'
  • Export selected objects and reproject the layer based on the EU-epsg tab

  • Calculate a new field using the following formula to get the length of each track in kilometers:

      "length" = $length / 1000 
  • Select electrified parts of the network using the “other_tages” field:

      "other_tags" like '%"electrified"=>"yes"%'
      or "other_tags" like '%"electrified"=>"contact_line"%'
      or "other_tags" like '%"electrified"=>"rail"%'
  • Report total length using the Basic Statistics for Fields tool

Learn more about OpenStreetMap data model

Calculate usability indicator

  • List required and optional data
  • For each data, indicate its availability using QGIS (Overpass Turbo can also be helpful to check OSM data) and the following scale :
    • “Yes”: fully available
    • “Partial”: not available everywhere on the country, or missing parts of the data
    • “No”: not available
  • Sum total required and optional data with Yes = 1; Partial = 0.5; No = 0
  • Generate indicator:
    • “Good” if required=2 and optional>2
    • “Okay” if required >1 and optional >=0
    • “Poor” if required=1 and optional >2
    • “Not usable” else

Map the result

To show the indicator and license compatibility on a map, use the Eurostat borders datasets (for my presentation, I have used the 1:20 million scale and EPSG:3035) and join the table using countries names.