Wenn Menschen an Verkehrssicherheitsanalysen denken, beginnen sie oft bei den Unfallorten.
- Wo ereigneten sich Unfälle?
- An welchen Kreuzungen gab es die meisten Unfälle?
- Wo liegen die aktuellen Hotspots?
Das sind sinnvolle Fragen. Aber nicht immer die wichtigsten. In unserer technischen Session „Räumliche Data Science in ArcGIS“, haben wir eine andere Frage untersucht:
An welchen Orten zeigt sich über längere Zeit ein anhaltendes Risiko?
Statt einzelne Verkehrsunfälle zu analysieren, haben wir historische Unfalldaten aus Frankfurt am Main aus den Jahren 2019 bis 2024 verwendet, um räumliche Muster zu identifizieren, die über mehrere Jahre hinweg stabil blieben. Dabei ging es nicht darum, einen einzelnen Vorfall zu erklären. Ziel war es herauszufinden, ob an bestimmten Orten unabhängig von kurzfristigen Schwankungen dauerhaft ein erhöhtes Risiko besteht.
%load_ext dotenv
%dotenv
from arcgis.gis import GIS
from arcgis.map import Map
import dotenv
import os
import pandas as pd
from traffic_safety.utils import combine_yearly_hotspots, list_feature_classes, summarize_hotspot_bins, generate_hotspots_renderer, filter_hotspot_bins, publish_hotspot_layer
home_portal = GIS("home")
gdb_path = os.getenv("HOTSPOT_GDB")
feature_classes = list_feature_classes(gdb_path)
Über einzelne Hotspots hinausblicken
Eine Hotspot-Analyse für ein einzelnes Jahr liefert eine Momentaufnahme. Städte sind jedoch dynamische Systeme. Das Verkehrsaufkommen ändert sich. Bauprojekte beginnen und enden. Der öffentliche Nahverkehr entwickelt sich weiter. Das Verhalten der Menschen verändert sich mit der Zeit. Ein Hotspot, der in einem Jahr erkannt wurde, kann im nächsten wieder verschwinden. Um langfristige Risiken besser zu verstehen, haben wir für jedes Jahr eine Getis-Ord-Gi*-Hot-Spot-Analyse durchgeführt und die Ergebnisse anschließend im Zeitverlauf verglichen.
Die Herausforderung besteht darin, dass die Hotspot-Polygone von Jahr zu Jahr nicht identisch sind. Ihre Grenzen verschieben sich, wenn sich die zugrunde liegenden Bedingungen ändern. Um dem Rechnung zu tragen, haben wir einen Workflow zur räumlichen Ausrichtung entwickelt:
- Jährliche Hot-Spot-Analyse durchführen
- Schwerpunkte der Hotspot-Bins berechnen
- Ein gemeinsames räumliches Referenzsystem verwenden
- Hotspot-Standorte über die Jahre hinweg abgleichen
- Für jeden Standort ein zeitliches Profil erstellen
- Beständigkeitswerte für Hotspots berechnen
- Die Ergebnisse zu einem Risikoindex normieren
So wurden mehrere unabhängige Analysen in eine einzige, leicht interpretierbare Risikooberfläche überführt.
from ipywidgets import HBox, VBox, Label, Layout
from traffic_safety.utils import generate_hotspots_renderer, read_feature_classes
def show_hotspot_map(portal: GIS, df: pd.DataFrame):
basemap_item_id = os.getenv("CUSTOM_BASEMAP_ITEM_ID")
if basemap_item_id:
portal_item = portal.content.get(basemap_item_id)
map_view = Map(portal_item)
else:
map_view = portal.map("Germany")
map_view.basemap.basemap = "osm"
drawing_info = {
"renderer": generate_hotspots_renderer()
}
fset = df.spatial.to_featureset()
map_view.content.add(fset, drawing_info=drawing_info, options={"opacity": 0.7})
map_view.zoom_to_layer(fset)
return map_view
hotspots_dict = read_feature_classes(gdb_path, [feature_classes[0], feature_classes[-1]])
hotspots_2019_df, hotspots_2025_df = hotspots_dict.values()
left_map = show_hotspot_map(home_portal, hotspots_2019_df)
right_map = show_hotspot_map(home_portal, hotspots_2025_df)
def side_by_side(left_map, left_label, right_map, right_label):
# Kartennavigation synchronisieren
#left_map.sync_navigation(right_map)
"""
def sync_navigation(change):
if right_map.center != left_map.center:
right_map.center = left_map.center
if right_map.zoom != left_map.zoom:
right_map.zoom = left_map.zoom
left_map.observe(sync_navigation, names=["center", "zoom"])
"""
# Für jede Karte und Beschriftung eine VBox erstellen
box1 = VBox([Label(left_label), left_map], layout=Layout(width='50%'))
box2 = VBox([Label(right_label), right_map], layout=Layout(width='50%'))
# Die VBoxes mithilfe einer HBox nebeneinander platzieren
hbox = HBox([box1, box2])
# Die HBox anzeigen
display(hbox)
side_by_side(left_map, "2019", right_map, "2025")
left_map.sync_navigation(right_map)
Von Unfalldaten zu einer Risikokarte
Die resultierende Ebene zeigte nicht die Anzahl der Unfälle. Sie machte etwas sichtbar, das vielleicht noch wertvoller ist: Hinweise auf anhaltende Risiken.
Standorte, die wiederholt als statistisch signifikante Hotspots auftraten, erhielten höhere Beständigkeitswerte. Standorte, die nur gelegentlich als Hotspots auftraten, erhielten niedrigere Werte. Dieser Unterschied ist wichtig. Ein einzelner schwerer Unfall kann Aufmerksamkeit erregen, doch wiederkehrende räumliche Muster geben oft tiefere Einblicke in das Verkehrssystem. Anhaltende Risiken können auf Einschränkungen der Infrastruktur, typische Verhaltensmuster im Verkehr, Mobilitätsknotenpunkte oder andere zugrunde liegende Faktoren hinweisen, die untersucht werden sollten.
base_feature_class = feature_classes[0]
combined_df: pd.DataFrame = combine_yearly_hotspots(gdb_path, base_feature_class)
summarized_df: pd.DataFrame = summarize_hotspot_bins(combined_df, min_years_observed=len(feature_classes))
show_hotspot_map(home_portal, combined_df)
hottest_df = filter_hotspot_bins(summarized_df, min_value=2, max_value=3)
hottest_df.sort_values(by="Gi_Bin_median", ascending=False).head()
Was wir gelernt haben
Eine der interessantesten Beobachtungen war, dass einige der Orte mit dem höchsten Risiko nicht unbedingt diejenigen mit dem stärksten Verkehrsaufkommen waren. Stattdessen ergab sich das Risiko häufig aus dem Zusammenspiel mehrerer Faktoren. Bei verwandten Arbeiten rund um den Frankfurt Urban Digital Twin stellten wir fest, dass betrieblich relevante Standorte häufig dort hervortraten, wo mehrere Indikatoren einander verstärkten. Historische Unfallmuster, Verkehrssimulationen, der Infrastrukturkontext und das Mobilitätsverhalten ergaben zusammen ein umfassenderes Bild, als es ein einzelner Datensatz bieten könnte.
Das verdeutlicht eine der Stärken räumlicher Data Science: Der Standort liefert Kontext. Räumliche Zusammenhänge machen oft Muster sichtbar, die verborgen bleiben, wenn Datensätze unabhängig voneinander analysiert werden.
Warum das wichtig ist
Viele Organisationen stehen vor ähnlichen Herausforderungen. Ob es um Verkehrssicherheit, Versorgungsinfrastruktur, Umweltüberwachung, öffentliche Gesundheit oder Anlagenverwaltung geht: Entscheidungsträger müssen oft vorübergehende Anomalien von dauerhaften Mustern unterscheiden. Räumliche Data Science hilft bei Fragen wie:
- An welchen Standorten besteht dauerhaft ein erhöhtes Risiko?
- Welche Muster bleiben über die Zeit hinweg stabil?
- Welche Gebiete sollten genauer untersucht werden?
- Wo sollten begrenzte Ressourcen vorrangig eingesetzt werden?
Diese Fragen gewinnen zunehmend an Bedeutung, da Organisationen von der beschreibenden Analyse zu einer evidenzbasierten Entscheidungsunterstützung übergehen möchten.
Räumliche Data Science als Grundlage
Für uns wurde die Risikokarte zu mehr als nur einem Analyseergebnis. Sie bildete die Grundlage für die nächsten Phasen der Frankfurt-Präsentation. Der Workflow folgte einem einfachen Ablauf:
- Räumliche Data Science identifiziert anhaltende Risiken.
- Agentische KI mit räumlicher Verankerung nutzt diese Erkenntnisse, um nachvollziehbare Empfehlungen zu erstellen.
- Vertrauenswürdige GeoAI sorgt für Governance und menschliche Kontrolle, bevor Maßnahmen ergriffen werden.
Dieser Ablauf spiegelt ein wichtiges Prinzip wider: KI ersetzt keine Evidenz. KI wird nützlicher, wenn sie auf Grundlage vertrauenswürdiger Erkenntnisse aus räumlichen Analysen Schlussfolgerungen ziehen kann.
Abschließende Gedanken
Eine der zentralen Botschaften der Session war einfach:
Wir ermitteln nicht, wo sich Unfälle ereignet haben. Wir ermitteln, wo Risiken anhalten.
Dauerhafte räumliche Muster liefern die Grundlage für nachvollziehbare Empfehlungen, vertrauenswürdige KI-Systeme und letztlich bessere Entscheidungen. Wenn sich Organisationen mit räumlicher Data Science, GeoAI und agentischer KI befassen, besteht die Herausforderung oft nicht darin, mehr Daten zu sammeln. Vielmehr gilt es, die relevanten Muster zu erkennen. Und in vielen Fällen sind diese Muster räumlicher Natur.
Verkehrssicherheits-Notebook @Github