Ich habe vor drei Wochen mit TomTom angefangen — 128 Messpunkte auf deutschen Autobahnen, stündlich abgefragt. Das war gut für Live-Lagen, aber unbrauchbar für die Planung einer Tour in zwei Wochen. Erst die BASt-Stundenwerte der letzten drei Jahre haben das gelöst: 2.367 Zählstellen, 57 Millionen Datenzeilen, alles offen verfügbar. Dazu die Autobahn-API für Live-Meldungen und ERA5-Wetterdaten für die Korrelation. Vier Quellen — jede mit blinden Flecken, gemeinsam ergeben sie ein komplettes Bild.
Wo es anfing: eine Karte mit roten Punkten
Am 24. Mai habe ich angefangen, Verkehrsdaten zu sammeln — mit der Frage aus dem letzten Artikel im Hinterkopf: Wie kann ich vorhersagen, wann eine bestimmte Strecke staufrei ist?
Die erste Antwort schien einfach: TomTom Traffic API. Im Free-Tier dürfen pro API-Key 2.500 Anfragen am Tag laufen — bei zwei Keys macht das 5.000 Aufrufe. Ich habe 128 Messpunkte gesetzt, jeden mit Koordinaten versehen, und einen kleinen Python-Sammler geschrieben, der stündlich abfragt.
Die Punkte verteilten sich auf das, was mich interessiert: Großstadt-Einfahrten München, Knoten Frankfurt und Hannover, Alpen-Bundesstraßen, Schwarzwaldhochstraße, Nürburgring-Region. Zusätzlich ein paar Auslands-Punkte am Brenner und Bozen, weil eine Iron-Butt-Tour ja nicht an der Grenze enden muss.
Pro Anfrage liefert TomTom vier Werte für ein Straßensegment: aktuelle Geschwindigkeit, Freeflow-Geschwindigkeit (also wie es ohne Behinderung wäre), aktuelle Reisezeit, Freeflow-Reisezeit. Aus dem Verhältnis ergibt sich eine Stau-Ratio. Schöne, saubere Daten.
Was 24 Tage Live-Daten mir zeigten
Drei Wochen später hatte ich rund 53.000 gemessene Cells — also 53.000 Mal die Antwort auf „Wie schnell rollt es gerade?“ für eine konkrete Stelle. Damit konnte ich erste Muster sehen:
- Freitag-Wellen auf der A5 zwischen Frankfurt und Karlsruhe — jede Woche reproduzierbar zwischen 15 und 19 Uhr.
- Wochenend-Spitzen auf der B307 zwischen Tegernsee und Sudelfeld am späten Vormittag — wenn die Sonne schien.
- Ruhige Phasen mitten in der Nacht, fast überall — aber mit erhöhtem Lkw-Anteil.
Das war hübsch — und nutzlos für meine eigentliche Frage. Denn was ich brauche, ist nicht „wie war es am Freitag, den 7. Juni“, sondern: „Wie sieht es typischerweise an einem Freitag im Juni gegen 17 Uhr aus?“ Dafür brauche ich Wiederholungen — viele Freitage über viele Monate. Drei Wochen reichen nicht. Drei Jahre vielleicht.
Die Lücke: ich brauche Geschichte, nicht Gegenwart
Eine Tour findet nicht heute statt, sondern in zwei Wochen. Live-Daten beantworten dann die falsche Frage. Ich brauche etwas anderes — und es musste mir jemand gesagt haben, denn von selbst kam ich nicht drauf.
Auf der Suche nach „historische Verkehrsdaten Deutschland“ stieß ich auf die Bundesanstalt für Straßenwesen — kurz BASt. Eine Bundesbehörde mit Sitz in Bergisch Gladbach, die seit Jahrzehnten den Verkehr auf deutschen Fernstraßen vermisst. Und — Überraschung — alle Daten sind frei verfügbar, unter der Datenlizenz Deutschland.
Das Volumen ist beachtlich:
| Was | Wie viel | Seit wann |
|---|---|---|
| Dauerzählstellen Deutschland | ~1.700 aktive, ~2.400 historisch | seit 2003 |
| Davon Autobahn | 1.464 | — |
| Davon Bundesstraße | 881 | — |
| Stundenwerte pro Jahr | ~18,5 Millionen | — |
Pro Stunde und Station gibt es nicht nur die Kfz-Gesamtzahl — sondern aufgeschlüsselt nach Fahrzeugart: Motorrad, Pkw, Lieferwagen, Bus, Lkw mit und ohne Anhänger, Sattelzug. Pro Fahrtrichtung. Pro Stunde. Pro Tag. Pro Jahr.
Die Daten kommen als Jahresarchive in einem hauseigenen Format — kein CSV, sondern ein „Bestandsbandformat V2.0“ aus dem Jahr 2004. Ein Festbreiten-Layout, in dem Fahrzeugklassen und Fahrstreifen nach festen Regeln nebeneinander stehen. Das zu parsen kostet einen Nachmittag. Drei Jahres-Archive zu importieren ergibt am Ende eine SQLite-Datenbank mit 57 Millionen Zeilen und 8,2 GB Größe — die ich auf meinem Mac mini hoste.
Was die Autobahn-API dazu sagt
Die Autobahn GmbH des Bundes — also der staatliche Autobahnbetreiber — bietet seit ein paar Jahren eine eigene offizielle REST-API. Hier gibt es nicht Stundenwerte, sondern Live-Lage: aktuelle Verkehrsmeldungen, Baustellen, Sperrungen, Parkplatz-Belegung.
Diese API ist die natürliche Ergänzung zu TomTom: Während TomTom Geschwindigkeitsmessungen aus Floating-Car-Daten ableitet, kennt die Autobahn-API die Ursachen. Wenn auf der A2 zwischen Hannover und Berlin ein Lkw quer steht, weiß TomTom nur, dass es langsam ist. Die Autobahn-API kann sagen warum — und manchmal sogar, wann es voraussichtlich wieder fließt.
Im aktuellen System nutze ich sie noch nicht aktiv. Das ist der Plan für den nächsten Iterationsschritt, wenn ich die historischen BASt-Muster mit Live-Anomalie-Erkennung kombinieren will.
Wetter — der unsichtbare Verkehrsteilnehmer
Eine Erkenntnis, die mich überrascht hat: Verkehr und Wetter sind ohne einander nicht zu verstehen. An einem sonnigen Samstag im Mai sind die Motorradanteile auf der B307 doppelt so hoch wie an einem verregneten. Die Stauanfälligkeit der A5 hängt nicht nur vom Wochentag ab, sondern auch davon, ob es trocken ist oder nicht.
Für die Wetter-Komponente nutze ich die ERA5-Reanalyse des Europäischen Zentrums für Mittelfristige Wettervorhersage. Die ist via Open-Meteo Archive zugänglich und liefert für jeden Punkt in Europa stündliche Werte zu Temperatur, Niederschlag, Wind, Bewölkung und Sichtweite — rückwirkend bis 1940. Wissenschaftlich validiert, in der Reanalyse-Forschung Standardquelle.
Mein Ansatz: Ich snappe die 2.367 BASt-Stationen auf ein 0,1-Grad-Raster (das entspricht rund 10 km Kantenlänge) — und lade pro Rasterzelle die Wetterhistorie der letzten drei Jahre. Aus 2.367 Einzelabfragen werden so 1.346 Rasterabfragen. Open-Meteo war damit nicht ganz einverstanden — aber das ist eine Geschichte für einen anderen Artikel.
Warum vier Quellen, nicht eine
Jede der vier Quellen alleine ist unvollständig:
- BASt hat die Tiefe und Historie — aber keine Live-Lage und keine Bundesstraßen-Spitzen-Strecken wie B11 Kesselberg oder B500 Schwarzwaldhochstraße in jedem Detail.
- TomTom deckt jede Straße ab — aber nur jetzt, und nur im Rahmen meines Kontingents.
- Autobahn-API kennt die Ursachen — aber keine Trends.
- Wetter verändert alles, aber sagt nichts über Verkehr direkt.
Zusammen ergeben sie ein räumlich-zeitliches Modell, in dem ich für eine konkrete Anfrage wie „Welche Tageszeit ist auf der A93 Richtung Inntal am Samstag im Juni am ruhigsten?“ eine belastbare Antwort bekomme. Die BASt-Stundenwerte liefern das Pattern. TomTom-Live korrigiert für den aktuellen Tag. Das Wetter liefert die Modifier. Die Autobahn-API meldet Anomalien.
Vier Quellen, ein Modell. Wie das Modell genau funktioniert — warum es ein Pattern-RAG mit Vektorsuche und Sprachmodell sein muss, und nicht einfach eine SQL-Abfrage — darum geht es in Teil 3 dieser Serie.
Was als nächstes kommt
Im nächsten Teil schauen wir uns die Architektur an: Wie aus 57 Millionen Statistik-Zeilen eine Datenbank wird, die auf natürliche Sprache antwortet. Embeddings, Vektorsuche, Hybrid-Retrieval, Sprachmodell-Antworten — und warum keiner dieser Bausteine alleine reichen würde.
Spoiler: Das Schwerste war nicht das Modell. Das Schwerste war, die Pattern-Texte so zu formulieren, dass das Modell sie versteht.