OVatlas English

Hoe werkt live OV op de kaart?

Van het voertuig naar de stip op je scherm: welke open feeds OVatlas leest, hoe vaak de posities verversen en waarom een rit soms verdwijnt.

Gepubliceerd 2026-09-23

Elk voertuig meldt zichzelf

In Nederland houdt vrijwel elk voertuig in het openbaar vervoer zijn eigen rit bij. Een bus, tram of metro stuurt onderweg korte berichten uit — aangekomen bij een halte, vertrokken, onderweg — en in zo'n bericht zitten de coördinaten van het voertuig, de rit die het rijdt en hoeveel het voor- of achterloopt op de dienstregeling. Dat berichtenformaat heet KV6, en het is openbaar: vervoerders publiceren het via het NDOV loket, het landelijke loket voor open OV-data. Treinen lopen langs een eigen spoor: de posities van NS-treinen komen uit de treinfeeds van NS en het NDOV loket.

Openbaar betekent hier ook echt openbaar. Tussen OVatlas en die berichten zit geen contract, geen commerciële licentie en geen aparte afspraak met een vervoerder; het zijn dezelfde open feeds waar ook andere landelijke OV-diensten op bouwen. Dat heeft een prettig gevolg en een lastig gevolg. Het prettige: wat een vervoerder aan het hele land laat zien, kan OVatlas ook laten zien. Het lastige: wat een vervoerder niet publiceert, bestaat voor de kaart niet.

Van feed naar stip op je scherm

OVatlas heeft een onderdeel dat de hele dag naar die feeds luistert. Het neemt de binnenkomende berichten aan, koppelt ze aan de landelijke dienstregeling — welke lijn is dit, welke richting, welke halte komt hierna — en houdt van elk voertuig bij waar het zich het laatst meldde. Je browser vraagt die stand niet telkens opnieuw op, maar krijgt hem binnen als een doorlopende stroom: zodra er een nieuwe positie is, schuift de stip op je scherm mee. In de praktijk gaat het om een verversing van enkele seconden.

Wat je ziet is dus geen animatie en geen schatting van waar een bus ongeveer zou moeten rijden. Elke stip staat op de laatst gemelde plek van dat voertuig. Tik je erop, dan lees je het lijnnummer, de bestemming, de volgende halte en de vertraging die het voertuig zelf meldt. De vertrektijden die je bij een halte ziet, komen uit dezelfde feeds, maar worden apart berekend: dat is de geplande tijd uit de dienstregeling, gecorrigeerd met de gemelde afwijking, en die lijst wordt los van de stroom met posities opgehaald. Kleine verschillen tussen beide beelden zijn dan ook normaal — een bus die er net iets over is, kan op de kaart nog als op tijd staan terwijl het haltepaneel al een minuut later toont. Het is ook de reden dat een vervoerder wel vertrektijden kan publiceren zonder posities.

Waarom een rit soms verdwijnt

Voertuigen melden niet allemaal even trouw. Apparatuur valt uit, een rit wordt op het laatste moment met ander materieel gereden dat niet is aangemeld, of de berichten blijven om een andere reden weg. Zolang ze binnenkomen, beweegt de stip. Blijven ze weg, dan veroudert de positie en verdwijnt het voertuig van de kaart, in plaats van stil te blijven staan op een plek waar het allang niet meer is. Een stip die er niet is, is eerlijker dan een stip die het verkeerde beweert.

Er is nog een reden waarom je iets kunt missen: niet elke vervoerder publiceert posities. Een vervoerder die alleen vertrektijden per halte deelt, zie je bij de halte gewoon terug, met vertraging en al, maar niet als bewegende stip tussen de haltes. Alle NS-treinen en de voertuigen van de vervoerders die wel posities publiceren, rijden er wel mee.

Wat je ermee kunt doen

De directe winst van live posities is dat je niet hoeft te gokken. Sta je bij een halte en is de bus al een paar minuten over tijd, dan zie je of hij drie straten verderop staat of nog helemaal aan het begin van de lijn. Open je een rit, dan telt de aankomsttijd bij jouw halte live af en schuift die mee met de werkelijkheid in plaats van met de dienstregeling. Voor wie iemand komt ophalen scheelt dat een hoop bellen.

Wat de kaart niet kan, is de toekomst kennen. De vertraging die je leest, is de stand van nu, gemeld door het voertuig zelf; wat er verderop op de route gebeurt, zit er niet in. Voor de uitleg van dat getal is er een aparte pagina, net als voor het complete overzicht van de databronnen.