Open data

Een groot deel van de gegevens die Rijden de Treinen gebruikt zijn gebaseerd op open data: gegevens die door partijen als NS ter beschikking gesteld worden om te hergebruiken op innovatieve manieren. Zo komt een groot deel van de informatie bijvoorbeeld als open data uit de Nationale Databank OV (NDOV), die door Rijden de Treinen vervolgens aangevuld en verbeterd wordt.

Regelmatig krijgt Rijden de Treinen de vraag of er gegevens beschikbaar zijn over storingen in een bepaald gebied, of een dataset van bijvoorbeeld alle stations in Nederland. Rijden de Treinen werkt graag mee aan dergelijke verzoeken en daarom stellen we een deel van de informatie ter beschikking voor hergebruik.

De volgende data is beschikbaar als open data:

  • Stationslijst: informatie over alle stations in Nederland
  • Tariefafstandenmatrix: een matrix met alle tariefafstanden tussen twee Nederlandse stations
  • Treinstoringen dataset: een bestand met alle treinstoringen in Nederland

De open data wordt periodiek geactualiseerd. De laatste versie vind je op deze pagina.

Stationslijst

Dit is een CSV-bestand met alle Nederlandse stations, inclusief afkorting, naam en GPS-coördinaten. Daarnaast is er ook een bestand waarin buitenlandse stations opgenomen zijn. Dit zijn vaak stations die (soms) vanuit Nederland bereikbaar zijn.

In de stationslijst vind je de volgende kolommen:

  • id - Intern ID van Rijden de Treinen voor een station.
  • code - Dit is de NS/ProRail-code (verkorting) van een station. Vaak herken je hier de stationsnaam in, maar er zijn wat vreemde eenden in de bijt (zoals de meeste stations in Den Haag). Een verkorting is max. 8 tekens lang.
  • uic - UIC-code van een station. Dit is een internationaal nummer dat per station uniek is. Nederlandse stations beginnen altijd met 84.
  • name_short - Korte stationsnaam. Hierin is vaak een groot deel van de stationsnaam weggelaten.
  • name_medium - Middellange stationsnaam.
  • name_long - Lange stationsnaam. Dit veld bevat de volledige, officiële stationsnaam.
  • slug - De 'slug' is een deel van de URL wanneer je voor het station vertrektijden of aankomsttijden opvraagt.
  • country - Het land waarin het station ligt.
  • type - Het soort station. Mogelijke waarden zijn (van meest belangrijk tot minst belangrijk): megastation, knooppuntIntercitystation, intercitystation, knooppuntSneltreinstation, sneltreinstation, knooppuntStoptreinstation, stoptreinstation, facultatiefStation. Met knooppunt als type wordt bedoeld dat je er kunt overstappen. Een facultatiefStation is een station dat normaal gesproken niet gebruikt wordt, behalve bij evenementen (zoals Rotterdam Stadion, wat alleen gebruikt wordt bij voetbalwedstrijden in de Kuip).
  • geo_lat - Latitude (breedtegraad), onderdeel van de GPS-coördinaten.
  • geo_lng - Longitude (lengtegraad), onderdeel van de GPS-coördinaten.




Afstandenmatrix

De matrix met tariefafstanden bevat voor alle stations in Nederland de afstand in tariefeenheden tussen twee stations. Voor de stations worden stationscodes (verkortingen) gebruikt; dezelfde code wordt ook gebruikt in de stationslijst (zie hierboven). In de matrix wordt de afstand berekend via de kortst mogelijke route. Deze rekenwijze wordt ook gehanteerd voor het berekenen van de kosten van een treinticket.

Naast de standaard matrix kun je ook een matrix downloaden per vervoerder. In deze matrices wordt de route berekend via trajecten waarop de vervoerder rijdt. Voor bijvoorbeeld de verbinding Zutphen-Apeldoorn heeft dat gevolgen: de kortste route is 18 tariefeenheden, maar wanneer je alleen NS-trajecten neemt is de kortst mogelijke afstand 31 tariefeenheden.

Download hieronder de afstandenmatrix waar je mee wilt werken:

In de afstandenmatrix worden de volgende conventies gehanteerd:

  • Cijfer: afstand tussen stations (in tariefeenheden)
  • XXX: stations zijn gelijk
  • ? (vraagteken): geen route tussen stations




Historische treinstoringen dataset

Rijden de Treinen verzamelt alle treinstoringen sinds 2011 in het archief met treinstoringen. Wil je deze gegevens gebruiken voor onderzoeksdoeleinden, een journalistieke reportage, een innovatieve toepassing of een studieopdracht? Dan kun je gratis deze data downloaden als open data.

Je kunt op dit moment de volgende datasets downloaden:

Je kunt deze data kosteloos gebruiken. Een bronvermelding is niet verplicht, maar wordt wel erg op prijs gesteld. Heb je iets leuks gemaakt? Laat het dan zeker even weten!

Toelichting bij de storingsdata

Wanneer je deze data gebruikt is het belangrijk om je te realiseren dat dit gaat over treinstoringen die door NS gemeld zijn als (landelijk) storingsbericht. Niet voor iedere trein die vertraagd is of die uitvalt wordt een storingsbericht aangemaakt; de vuistregel die NS hanteert is dat er een bericht wordt gemaakt wanneer meerdere treinen uitvallen of vertraging oplopen. Daarnaast is het goed om je te realiseren dat er sinds 2017 ook meer storingen gemeld zijn, omdat NS toen een nieuw systeem heeft geintroduceerd waarmee ook kortdurende storingen sneller gemeld werden. Het aantal storingen vanaf 2017 vergelijken met het aantal storingen in de jaren daarvoor is daardoor niet goed mogelijk (tenzij je alle kortdurende storingen niet meetelt).

De bron voor storingsberichten is altijd NS; bij NS wordt door de afdeling reisinformatie 24 uur per dag bekeken of er storingen zijn. De storingsmeldingen in de open data zijn hetzelfde als de berichten op de borden op het station en op de NS-website.

In de storingsdata vind je de volgende kolommen:

  • rdt_id - Dit is het ID dat Rijden de Treinen gebruikt voor een storing. Wanneer je een storing opent in het storingsarchief, zie je het ID verwerkt in de URL van de storingspagina. Zo is bij deze treinstoring tussen Amsterdam Zuid en Schiphol het ID 12345.
  • ns_lines - Dit zijn de trajecten die NS koppelt aan een storing. Bij de storing uit het voorbeeld is dat Schiphol-Almere C./Hilversum/Utrecht C. Een probleem met deze trajecten (wanneer je de data wilt analyseren) is dat ze niet gestandaardiseerd zijn. Deze kolom is daarom minder geschikt om voor analyses te gebruiken.
  • rdt_lines - Dit zijn de trajecten die Rijden de Treinen aan een storing heeft gekoppeld. Dit is altijd gebaseerd op de lijst met trajecten van Rijden de Treinen, en de koppeling is gebaseerd op de stations waar een storing zich bevindt. In het voorbeeld is de storing tussen Amsterdam Zuid en Schiphol. Rijden de Treinen koppelt dan de trajecten Amersfoort-Schiphol, Lelystad-Schiphol en Utrecht-Schiphol. De trajecten zijn altijd in alfabetische volgorde gekoppeld, gescheiden door een komma.
  • rdt_lines_id - Dit is het ID van de trajecten die Rijden de Treinen heeft gekoppeld, geschieden door een komma.
  • rdt_station_names - Op basis van de koppeling met de trajecten rekent Rijden de Treinen ook uit welke stations getroffen zijn door een treinstoring. In deze kolom staan de stationsnamen van de betrokken stations, gescheiden door een komma.
  • rdt_station_codes - Dit zijn de codes (afkortingen) van de betrokken stations, gescheiden door een komma. De stationscodes zijn terug te vinden in de dataset met stations (zie hierboven).
  • cause_nl - Dit is de oorzaak van een storing, in het Nederlands. Wanneer gedurende een storing de oorzaak door NS aangepast wordt, wordt in deze kolom de laatst gebruikte oorzaak getoond.
  • cause_en - De storingsoorzaak in het Engels vertaald.
  • statistical_cause_nl - Voor statistische doeleinden houdt Rijden de Treinen ook een 'statistische oorzaak' bij. Wanneer de storingsoorzaak verandert, raakt daarmee soms informatie over de daadwerkelijke oorzaak van een storing verloren. Als de storingsoorzaak wordt aangepast naar een oorzaak als een eerdere verstoring, wordt in deze kolom de originele oorzaak getoond. Voor deze seinstoring bij Woerden is bijvoorbeeld de laatste oorzaak 'een eerdere verstoring', maar houden we voor statistieken de oorzaak grote sein- en wisselstoring aan.
  • statistical_cause_en - De statistische oorzaak, maar dan in het Engels.
  • cause_group - De groep waarin de storing ingedeeld is. Dit zijn de kopjes op de lijst met storingsoorzaken, zoals Ongelukken of Materieelproblemen. In de kolom wordt de groep in het Engels opgeslagen.
  • start_time - Het tijdstip waarop de storing is gestart.
  • end_time - Het tijdstip waarop de storing is geëindigd.
  • duration_minutes - De storingsduur in minuten.




Aangepaste datasets of hulp met analyseren

Heb je een specifieke onderzoeksvraag, meer data nodig of wil je graag hulp met een analyse? Dan kan Rijden de Treinen zeker helpen. Neem contact op met Rijden de Treinen om geheel vrijblijvend de mogelijkheden te bespreken.

Open source software

Rijden de Treinen verwerkt diverse realtime informatiestromen vanuit NDOV. De backend die deze informatiestromen verwerkt is open-source en is gratis voor iedereen beschikbaar!

GoTrain is de backend die voor Rijden de Treinen real-time alle actuele vertrektijden, aankomsttijden en ritdetails verwerkt. De losse XML-berichten die vanuit de NDOV-data verstuurd worden, worden door GoTrain vertaald naar een handige REST API, die de actuele data in JSON-formaat teruggeeft.

GoTrain is een open source serverapplicatie, geschreven in Go, en is beschikbaar onder de GPL v3 licentie. Je kunt de software gratis downloaden, gebruiken en aanpassen voor eigen gebruik (zolang je de broncode openbaar maakt).

Copyright op datasets

Tenzij anders vermeld is op alle datasets van Rijden de Treinen de Creative Commons Zero-licentie van toepassing. Een bronvermelding met link naar Rijden de Treinen is niet verplicht, maar wordt wel op prijs gesteld.

CC0