Verkehrsdaten sind von Haus aus fehlerhaft. So beheben wir das.

Jeder Verkehrsbetrieb kann einen GTFS-Feed veröffentlichen, ohne dass ihn jemand vorab prüft. Die gelieferten Daten sind uneinheitlich, unvollständig und manchmal schlicht falsch: doppelte Haltestellen, fehlerhafte Kalender, ungültige Koordinaten oder Ankunftszeiten nach den Abfahrtszeiten. Ein darauf aufbauender Routenplaner schickt Menschen zur falschen Straßenecke. Ein KI-Agent, der einen veralteten Fahrplan wiedergibt, lässt Menschen, die ihm vertraut haben, an der Haltestelle stehen. Wir verarbeiten 7.000+ Feeds von Verkehrsbetrieben weltweit in einem Verfahren, das diese Lücke schließt: Wir beziehen und vereinheitlichen jeden Feed, führen überlappende Betreiberquellen zu einem konsistenten Datensatz zusammen und wenden anschließend 150+ Prüfungen zur Korrektur, Anreicherung und Validierung an, die anhand realer Produktionsdaten verfeinert wurden.

Fortlaufende Pflege statt einmaliger Korrektur

Diese Verarbeitung wird kontinuierlich weiterentwickelt. Neue Regeln, verbesserte Algorithmen und Korrekturen der Datenqualität erscheinen jede Woche. Suche, Fahrpläne und API-Antworten nutzen die neueste validierte Verarbeitungsversion. Die Veröffentlichung erfolgt über eine Blue-Green-Serverrotation: Anfragen werden auf eine frisch bereitgestellte Umgebung umgeleitet, anstatt die laufende Umgebung neu zu starten. Die Routenplanung nutzt eine eigene Infrastruktur mit unabhängigem Veröffentlichungszyklus. Einmalige und regelmäßige Datenlieferungen benötigen eine manuelle Freigabe. Nutzen Sie das Formular für Datenanfragen, um Datenexporte und Lieferbedingungen mit uns abzustimmen.

Wöchentlich
Pipeline-Versionen
Jede Woche eine neue Version mit verbesserten Regeln
ca. 7 Tage
Aktualisierung statischer GTFS-Daten
Alle 7.000+ Feeds werden wöchentlich vollständig neu verarbeitet und veröffentlicht
15-60 Sek.
Latenz der Echtzeitdaten
Laufender Import von Fahrzeugpositionen und Fahrtaktualisierungen aus 1.000+ GTFS-RT-Feeds

An realen Verkehrsdaten verfeinerte Regeln

Manche Strukturprüfungen dauern nur Millisekunden. Die feedübergreifende Zusammenführung doppelter Haltestellen, die Erkennung identischer Fahrten und das Zusammenführen von Kalendern erforderten über ein Jahr Tests und Verbesserungen anhand realer Produktionsdaten.

Jede Regel wird im wöchentlichen Verarbeitungszyklus anhand von 7.000+ realen Feeds validiert.

Verarbeitung statischer GTFS-Daten

Eingang
7.000+ GTFS-Quellfeeds
Feeds der Verkehrsbetriebe
Schritt 0
Datenbeschaffung
Herunterladen, entpacken, vereinheitlichen
Schritt 1
Zusammenführung
Überlappende Betreiberquellen zusammenführen
Zwischenstand
Einheitlicher GTFS-Feed
1 Feed
Schritt 2
Korrigieren, ergänzen, Duplikate entfernen
150+ Prüfungen
Ausgabe
Verbesserte GTFS-Daten
+ GeoJSON & Statistiken

Was wir bei der Verarbeitung korrigieren

GTFS ist ein offenes Format zur eigenständigen Veröffentlichung: Jeder Betreiber kann einen Feed bereitstellen, ohne dass eine zentrale Stelle ihn vorab validiert. Wir erfassen 10.000+ Verkehrsbetriebe in 90+ Ländern - von U-Bahn-Netzen mit eigenen Datenteams bis zu einzelnen Busunternehmen, deren Fahrplanexport aus seit zehn Jahren unveränderter Software stammt. 150+ automatisierte Prüfungen laufen für jeden Feed, um die daraus entstehenden Probleme zu erkennen. Sie löschen nicht nur fehlerhafte Daten: Sie vereinheitlichen die Schreibweise von Namen, reparieren fehlerhafte Verknüpfungen und geben jeder Haltestelle, Linie und Fahrt eine stabile Identität und Sortierung über wöchentliche Updates hinweg. Deshalb ist auch die darauf aufbauende API schnell: Ergebnisse werden bereits benannt, ohne Duplikate und korrekt sortiert geliefert. Ihre Anwendung muss sie nicht bei jeder Anfrage bereinigen. Hier zeigen wir eine Auswahl, gegliedert nach Datenbereichen:

Namen & Kennungen

Namensfelder aus den Quellen enthalten leere Werte, uneinheitliche Groß- und Kleinschreibung oder Angaben, die sich in zwei Feldern wiederholen.

Gut lesbare, einheitliche Namen

Keine HALTESTELLEN IN GROSSBUCHSTABEN oder fehlerhaft wiederholten Zeichen: Wir bereinigen alle Namensfelder und vereinheitlichen ihre Schreibweise, damit Ihre Oberfläche keine Quellfehler ausgleichen muss.

"oxford STREET !!" → "Oxford Street"

Liniennamen, die in Listen funktionieren

Kurze und lange Namen werden automatisch aufeinander abgestimmt. So bleiben keine leeren Felder, doppelten Angaben oder überlangen Namen, die Ihre Linienauswahl beeinträchtigen.

short_name leer, long_name "25" → als Kurzname übernommen

Keine wiederholten Angaben in Haltestellendaten

Wiederholt eine Beschreibung lediglich den Haltestellennamen, leeren wir sie, statt denselben Text unter zwei verschiedenen Feldern zu liefern.

stop_desc = stop_name → geleert

Keine namenlosen Einträge

Haltestellen, Betreiber oder Fahrten ohne Namen erhalten einen klar erkennbaren Platzhalter statt eines leeren Felds, das Ihre Anzeigelogik beeinträchtigt.

agency_name leer → "Transit Agency"

Fahrgäste sehen immer das Fahrtziel

Fehlt die Zielanzeige einer Fahrt, ergänzen wir sie anhand der letzten Haltestelle, damit Ihre Anwendung ein Ziel anzeigen kann.

trip_headsign leer → aus letzter Haltestelle ergänzt

Verlässliche Sprachangaben

Stimmt die im Feed angegebene Sprache nicht mit der des Betreibers überein, korrigieren wir sie. Ihre Lokalisierung kann sich auf dieses Feld verlassen.

feed_lang falsch → aus agency_lang abgeleitet

Kalender & Fahrpläne

Verkehrszeiträume ohne tatsächlichen Betrieb, Ankunftszeiten nach der Abfahrt oder physikalisch unmögliche Geschwindigkeiten: Wer dem Rohfeed vertraut, hält Exportfehler für echte Fahrplanangaben.

Kalender, die den tatsächlichen Betrieb abbilden

Nicht genutzte Verkehrszeiträume, widersprüchliche Kalendereinträge und doppelte Kalender werden erkannt und entfernt, bevor sie Fahrgästen eine Verbindung an einem falschen Verkehrstag anzeigen.

2 identische Mo-Fr-Einträge → 1 Eintrag

Keine widersprüchlichen Zeitfolgen im Fahrplan

Wenn die Ankunft an der aktuellen Haltestelle vor der Abfahrt an der vorherigen Haltestelle liegt, korrigieren wir diesen wiederkehrenden Exportfehler und kennzeichnen die seltenen Feeds, in denen solche Fehler zu häufig auftreten, um sie ungeprüft zu korrigieren.

A: Abfahrt 14:05; B: Ankunft 14:02 → korrigiert

Abfahrts- und Ankunftszeiten für jede Fahrt

Leere Zeitfelder werden geprüft und ergänzt, damit nachgelagerte Systeme die tatsächliche Abfahrtszeit nicht erraten müssen.

Ankunft/Abfahrt leer → ergänzt

Keine nicht planbaren Fahrten

Fehlt bei einer Fahrt die erste oder letzte Zeitangabe, lässt sie sich nicht planen. Wir entfernen sie, bevor sie unbemerkt eine Reiseverbindung beeinträchtigt.

Erste oder letzte Fahrtzeit fehlt → entfernt

Nachtverkehr korrekt abbilden

Abfahrten nach Mitternacht werden in ein gültiges GTFS-Zeitformat überführt, ohne den tatsächlichen Fahrplan zu verändern. Ein Detail, an dem einfache Parser häufig scheitern.

27:15:00 → normalisiert, Verkehrstag verschoben

Eindeutige Kennzeichnung genauer Zeiten

Das Feld timepoint wird automatisch danach gesetzt, ob tatsächliche Ankunfts- und Abfahrtsdaten vorliegen. Es bleibt nicht leer und muss nicht von jedem Nutzer anders interpretiert werden.

timepoint leer → genau oder ungefähr

Keine physikalisch unmöglichen Fahrten

Überlappende Taktintervalle werden bereinigt und Fahrten mit unmöglichen Geschwindigkeiten entfernt. Fahrgästen soll kein Bus mit 2.000 km/h angezeigt werden.

Überlappende Takteinträge → Duplikate entfernt

Haltestellen & Koordinaten

Zwei Betreiber veröffentlichen dieselbe Haltestelle getrennt, eine Fahrt verweist auf eine im Feed nicht definierte stop_id, und Angaben zur Barrierefreiheit fehlen oder sind falsch.

Der richtige Typ für jede Haltestelle

Für reine Einstiegshaltestellen wird der Standorttyp automatisch gesetzt. Fahrten, die auf einen unpassenden Haltestellentyp verweisen, werden erkannt, bevor sie Ihre Karte beeinträchtigen.

location_type null → 0 (Bahnsteig)

Bahnhöfe mit echten Zugängen

Ein- und Ausgänge sowie Verknüpfungen zum übergeordneten Bahnhof werden aus einer gepflegten Knotenpunktdatenbank ergänzt. Falsch platzierte übergeordnete Bahnhöfe werden an ihren tatsächlichen Standort verschoben.

Bahnhof ohne Zugänge → Zugänge ergänzt

Keine fehlerhafte Fahrt durch eine fehlende Haltestelle

Verweist eine Fahrt auf eine in stops.txt nicht definierte Haltestelle, rekonstruieren wir diese. Wo verfügbar, stammen Name und Koordinaten aus den offiziellen britischen NAPTAN-Daten. So bleibt die Fahrt nutzbar.

Haltestelle referenziert, aber nicht definiert → aus NAPTAN rekonstruiert

Verlässliche Angaben zur Barrierefreiheit

Ein Bahnhof gilt als zugänglich, sobald ein Bahnsteig zugänglich ist, und nur dann als unzugänglich, wenn dies für alle Bahnsteige ausdrücklich angegeben ist. Fehlende Angaben bleiben unbekannt und werden nicht fälschlich als "nein" ausgegeben.

1 von 3 Bahnsteigen zugänglich → Bahnhof zugänglich

Präzise und kompakt

Koordinaten werden auf sechs Nachkommastellen gerundet, mit einer Genauigkeit von unter einem Meter. Das reduziert die Dateigröße bei weiterhin präzisen Positionsangaben.

51.5074123456 → 51.507412

Ein Ort, ein Haltestelleneintrag

Etwa 20 Meter voneinander entfernte Haltestellen mit gleicher Fahrtrichtung werden als derselbe physische Ort erkannt und zusammengeführt, statt doppelt auf der Karte zu erscheinen.

2 Haltestellen, 20 m Abstand, gleiche Richtung → zusammengeführt

Passende Verkehrsmittel für jede Haltestelle

Das Verkehrsmittel einer Haltestelle wird aus den dort tatsächlich verkehrenden Linien abgeleitet. Karte und Filter zeigen ohne zusätzliche Abfragen das richtige Symbol.

3 Buslinien bedienen die Haltestelle → Verkehrsmittel: Bus

Daten nach Stadt ohne eigene Geodatenverarbeitung

Jede Haltestelle wird ihrer Stadt zugeordnet, damit stadtspezifische Exporte und API-Filter direkt funktionieren.

Koordinaten → Stadt: London

Keine Fahrten ohne Strecke

Eine Fahrt mit nur einer Haltestelle bildet keinen echten Verkehrsdienst ab. Sie wird zusammen mit den häufig zugehörigen doppelten Haltestelleneinträgen entfernt.

Fahrt mit 1 Haltestelle → entfernt

Linien & Tarife

Fahrzeugtyp, Farbe oder Tarifangaben einer Linie sind häufig falsch codiert, leer oder aus einem anderen Feld des Feeds kopiert.

Korrekte Fahrzeugtypen für Ihre Nutzer

Falsche Fahrzeugtypen, Liniennamen und Betreiberzuordnungen werden erkannt und anhand einer von unserem Datenteam gepflegten Tabelle korrigiert.

route_type falsch codiert → korrigiert

Keine unbekannten Linientypen

Fehlende oder ungültige Linientypen werden auf Bus gesetzt, damit Ihre Anwendung keinen unbekannten Wert erhält. Jede solche Korrektur löst einen internen Hinweis zur manuellen Prüfung ungewöhnlicher Fälle aus.

route_type fehlt → Bus, zur Prüfung markiert

Stets lesbare Linienfarben

Ungültige Farbcodes werden korrigiert. Fehlende Textfarben werden passend zum Hintergrund gesetzt, damit Linienkennzeichnungen lesbar bleiben.

route_text_color fehlt → kontrastreiche Farbe gesetzt

Keine doppelten Links in Liniendaten

Eine Linien-URL, die lediglich die Website des Betreibers wiederholt, wird geleert.

route_url = agency_url → geleert

Auch kleine Details werden berücksichtigt

Bei Fährfahrten wird das Feld zur Fahrradmitnahme korrekt gesetzt. Dadurch entfällt eine Validierungswarnung, die viele Feeds standardmäßig enthalten.

Fährfahrt, bikes_allowed leer → erlaubt

Tarifdaten gemäß GTFS-Spezifikation

Felder der Tarifregeln werden vor der Auslieferung anhand der GTFS-Spezifikation geprüft und korrigiert.

Ungültiges fare_rules-Feld → korrigiert

Stabile Kennungen, Sortierung & Geschwindigkeit

Ein Anbieter nummeriert Fahrt-IDs zwischen Updates neu, zwei Quellen veröffentlichen dieselbe Linie mit unterschiedlichen Kennungen, und im Rohfeed fehlt eine sinnvolle Reihenfolge der Tagesfahrten.

Dieselbe Linie über mehrere Quellen hinweg erkennen

Linien erhalten einen Fingerabdruck anhand ihrer tatsächlichen Geografie. So wird dieselbe Linie aus zwei Quellen als eine Linie erkannt und nicht doppelt aufgeführt.

2 Quellen, gleiche Linie → 1 maßgeblicher Datensatz

Stabile Fahrtkennung trotz neuer Quell-IDs

Fahrten werden anhand ihrer Haltestellenfolge und Zeiten erkannt. Dieselbe planmäßige Fahrt behält ihre Identität über wöchentliche Updates hinweg, auch wenn der Anbieter seine Fahrt-IDs neu nummeriert.

trip_id des Anbieters ändert sich → unser Hash bleibt gleich

Keine doppelten Fahrten

Fahrten mit gleichem Linien- und Fahrplanfingerabdruck werden als identisch erkannt und zu einem maßgeblichen Datensatz zusammengeführt.

2 Fahrten, identischer Fahrplan → zusammengeführt

Ergebnisse in der richtigen Reihenfolge

Jede Fahrt erhält bei der Verarbeitung eine stabile tägliche Sortierposition. Ihre und unsere Anwendung müssen Fahrten daher nicht bei jeder Anfrage erneut sortieren.

08:15, 08:02, 08:40 → Sortierposition 2, 1, 3

Lückenlose Haltestellenreihenfolge

Ungewöhnliche Haltestellennummerierungen werden lückenlos ab null neu vergeben. Das vereinfacht die Verarbeitung der Haltestellen einer Fahrt.

Reihenfolge 3, 7, 12 → 0, 1, 2

Stabile Haltestellenkennung über Updates hinweg

Haltestellen werden anhand von Name, Koordinaten und Verkehrsmittel erkannt. So lässt sich derselbe physische Halt über Quellen und wöchentliche Updates hinweg zuordnen.

Name + Koordinaten + Verkehrsmittel → stabiler Haltestellen-Hash

Schnell darstellbare, passende Linienverläufe

Überflüssige Geometriepunkte werden entfernt und Entfernungen neu berechnet, um die Datenmenge zu reduzieren. Ein Verlauf, der stark von der tatsächlichen Fahrt abweicht, wird von ihr getrennt, statt die Karte irreführend darzustellen.

4.200 Geometriepunkte → vereinfacht

Betreiber, Zeitzonen & Abfragen

Eine falsche oder fehlende Betreiberzeitzone lässt Routenplaner Ankünfte eine Stunde zu früh oder zu spät anzeigen, für jeden Fahrgast und jeden Tag, bis jemand den Fehler bemerkt.

Nutzbare Kontaktdaten der Betreiber

Fehlerhafte E-Mail-Adressen und URLs werden geleert. Fehlt die erforderliche Betreiber-URL, wird ein Platzhalter eingesetzt, damit nachgelagerte Systeme weiterarbeiten können.

Fehlerhafte agency_email → geleert

Klare Sprachangaben für Betreiber

Eine fehlende Betreibersprache wird aus der Standardsprache des Landes ergänzt, damit Ihre Lokalisierung eine verwertbare Grundlage hat.

agency_lang leer → Landesstandard

Korrekte Abfahrtszeiten

Ungültige oder geografisch unpassende Zeitzonen bei Betreibern und Haltestellen werden korrigiert. Sie gehören zu den häufigsten Ursachen für um eine Stunde verschobene Ankünfte im Routenplaner.

"GMT+1" → "Europe/Paris"

Umstiegsregeln mit gültigen Zielen

Umstiegsregeln, die auf nicht vorhandene Haltestellen oder Linien verweisen, werden entfernt, bevor sie die Verbindungssuche beeinträchtigen.

Umstieg zu unbekannter stop_id → entfernt

Sofort wissen, welche Linien eine Haltestelle bedienen

Jede Haltestelle erhält einen vorberechneten Index ihrer Linien. Die API kann diese direkt nachschlagen, statt die Verknüpfung bei jeder Anfrage neu zu berechnen.

Haltestelle → [25, 73, N25] vorberechnet

Verarbeitung von Echtzeitdaten

Eingang
1.000+ GTFS-RT
Fahrzeugpositionen, Fahrtaktualisierungen
Schritt 1
Einlesen & validieren
Protobuf decodieren
Schritt 2
Geografischer Filter
Positionen außerhalb der Region verwerfen
Schritt 3
Kennungen vereinheitlichen
Linien- & Haltestellen-IDs zuordnen
Schritt 4
Fahrten zuordnen
Mehrere Merkmale abgleichen
Schritt 5
Ankunftsprognose
Lücken interpolieren
Ausgabe
Echtzeit-API
Zugeordnete Positionen & Prognosen

Die Synchronisierung von GTFS-RT gehört zu den schwierigsten Aufgaben bei der Verarbeitung von Verkehrsdaten. Jeder Anbieter nutzt eigene interne Kennungen, Formate und Namenskonventionen, die in Echtzeit mit dem statischen Fahrplan abgeglichen werden müssen. Zusätzlich zur statischen Verarbeitung setzen wir spezielle Regeln für die Echtzeitzuordnung ein:

  • Geografische Plausibilitätsprüfung der Fahrzeugpositionen: Koordinaten außerhalb des Verkehrsgebiets werden automatisch verworfen. Ein reales Beispiel ist ein Londoner Feed, der Busse in den USA meldete.
  • Beim Zusammenführen mehrerer Betreiberfeeds kann dieselbe Linien-ID mehrfach vorkommen. In diesem Fall bleibt die Zuordnungspriorität zwischen den Duplikaten ausdrücklich erhalten. Gleicher Betreiber und gleiche Linie, 2 Quellen → Zuordnungspriorität erhalten
  • Die Fahrtzuordnung folgt nicht einfach der zeitlichen Nähe: Liegt eine Echtzeitankunft zwischen zwei planmäßigen Fahrten, erfolgt die Zuordnung anhand eines asymmetrischen Zeitfensters statt nach der Mitte zwischen beiden Fahrten. Zeit zwischen 2 planmäßigen Fahrten → Zuordnung über ein 75/25-Fenster
  • Ein abgestuftes Verfahren versucht zunächst die genaueste Zuordnung und lockert die Kriterien erst, wenn diese scheitert, statt einer einzigen Alles-oder-nichts-Regel zu folgen. Genaue Haltestelle und Zeit fehlen → zunächst Linie und Fahrt, dann Linie und Zeit prüfen
  • Lässt sich eine Meldung nicht zuverlässig zuordnen, etwa bei fehlender Richtung und ohne passenden Ersatzabgleich, bleibt sie ausdrücklich ohne Zuordnung. Geraten wird nicht. Richtung fehlt, kein Ersatzabgleich möglich → keine Zuordnung
  • Ankunftsprognosen für Haltestellen mit verspäteten oder fehlenden Echtzeitdaten

Länderspezifische Verarbeitung

Zusätzlich zur allgemeinen Verarbeitung entwickeln wir Regeln für einzelne Länder. Sie berücksichtigen lokale Datenformate, Codierungsstandards und Besonderheiten der Betreiber. Diese Regeln ergänzen die Basisverarbeitung und richten sich nach den tatsächlichen Datenproblemen des jeweiligen Anbieters.

Großbritannien (NAPTAN-Integration): Ergänzt Haltestellennamen, Koordinaten, ATCO-Codes und Bahnsteigdaten aus der nationalen NAPTAN-Datenbank. Fügt übergeordnete Bahnhöfe und Zugänge hinzu. Vereinheitlicht Betreibernamen anhand des National Operator Code (NOC)-Registers.
Irland: Ergänzt Haltestellen mit NAPTAN-Ireland-Daten. Fügt manuell erfasste Bahnhofsein- und -ausgänge hinzu, die in offiziellen Datensätzen fehlen.
Korrektur von ATCO-Haltestellencodes: Korrigiert falsche ATCO-Codes bei nicht standardkonformen Anbieterkennungen, die sonst den Abgleich von Echtzeitmeldungen mit Fahrzeugpositionsdaten verhindern würden.
Ergänzung durch Traveline: Nutzt regionale Traveline-Berichte, um überlappende Datensätze geografisch abzugrenzen und die GTFS-RT-Zuordnung für britische Busdaten zu verbessern.
Kundenspezifische Regeln: Für Unternehmenskunden mit besonderen Anforderungen an Datenumwandlungen oder Ausgabeformate implementieren wir eigene Regeln für die jeweilige Feedgruppe.

Die Datengrundlage von BusMaps

Dieselben verarbeiteten Daten unterstützen die Verbindungssuche, Abfahrtstafeln und API-Antworten von BusMaps. Nutzen Sie sie über unsere API oder fragen Sie korrigierte Datensätze für Ihre eigene Infrastruktur an.

1.500+
Entwickler nutzen diese Daten
30M+
API-Anfragen pro Monat
2–99 ms
Typische API-Antwortzeit
99,5 %
SLA zur API-Verfügbarkeit

Korrigierte Verkehrsdaten für Ihr Projekt

Fragen Sie korrigierte GTFS-Daten, GeoJSON oder individuelle Exporte an, oder binden Sie unsere API ein. Nennen Sie die benötigte Abdeckung, Formate und Aktualisierungsintervalle, damit wir Lieferung oder Integration abstimmen können.