Werkstatt: Zu Fuß durch den Münchner Innenraum

Mit Kartendaten lassen sich tolle Analysen und Anwendungen bauen. Ich bin ein großer Verfechter der Open Street Map (merkt man kaum in diesem Blog). Mit deren Hilfe habe ich auch eine etwas andere Innenraumkarte für die Münchner öffentlichen Verkehrsmittel gebaut.

Inspiriert wurde ich durch eine Veröffentlichung der Londoner Verkehrsgesellschaft. Die hat mit ihrem Routenplaner die Zeiten ermittelt, die man zu Fuß zwischen den einzelnen Stationen zurücklegen muss – und das auf eine Karte gepackt (Mehr dazu hier). Dabei zeigt sich: Manchmal lohnt es sich sehr, mal kurz ein paar Minuten zu Fuß zu gehen – wenn die U-Bahn gerade erst weggefahren ist, oder es Probleme gibt.

Von London nach München

Und da kommt München ins Spiel. Immer wieder gibt es auch hier Probleme mit den Öffis, die die Pendler nerven. Wenn die eine Karte hätten, könnten sie sich selbst helfen. Ich wollte also die Gehzeiten aller Stationen des Münchner Nahverkehrsnetzes (S-Bahn und U-Bahn) ermitteln. Weil die Stationen außerhalb des Innenraums fast nur noch S-Bahnen sind – und gehwegemässig sehr weit auseinander liegen, habe ich mich auf den Innenraum beschränkt. Wie ich das grundsätzlich gemacht habe, findet ihr in diesem Blogartikel.

Die Daten kamen aus der Open Street Map (OSM). Dort gibt es eine Wiki-Seite in der Münchner Orte vertaggt sind. So auch die Transportmittel mit ihren Linienverläufen und Haltestellen. Jedes Objekt in der OSM hat eine ID – und lässt sich damit supereasy abfragen.

Ein Blick ins OSM-Wiki: Hier stehen die Relationen der Münchner U- und S-Bahnen

So kann ich für jede U-Bahnlinie, die als Zusammenhang (Relation) festgelegt ist, die dazugehörigen Punkte abfragen. Die Stationen.

Für die U1 sehen die Daten in der Open Street Map beispielsweise so aus:

Die U1 mit den Daten der Linie. Jede Station hat eigene Daten (z.B. Name). © OpenStreetMap-Mitwirkende

Für jede U-Bahnlinie habe ich mir dann die Relation herausgesucht und mit Liniennummer in eine CSV-Datei geschrieben. Das hätte ich auch locker automatisieren können, denn die Abfrage über die Open Street Map ist ja ganz leicht. War aber kein großer Unterschied für mich.

So sehen die Linien und ihre IDs aus:

Ein Ausschnitt aus der CSV:

line relation_id
u1 3502654
u2 3502584
u3 3484046
s1 1773068
s2 1854799
s3 1792663

 

Die CSV-Datei habe ich dann in R geladen und für jede Linie die Stationskoordinaten abgefragt. Die wurden dann an die Google Distance Matrix geschickt (mehr dazu hier). Aus jeder Linie entstand dann eine Matrix, in der die Gehzeiten zwischen den einzelnen Stationen beschrieben waren. Die Linienmatrizen habe ich einzeln als CSV (z.B. S1.csv oder U6.csv) abgespeichert und händisch in einer Innenraumvorlage ergänzt. Auch das könnte man automatisieren, wenn festlegt, wo zwischen den Stationen die Zeiten erscheinen sollen.

In R die Stationen abgefragt, dann die Distanz berechnet

Ein Blick in den Code (den API-Key habe ich entfernt):

Noch ein bisschen professioneller wäre der Code, wenn wir die Abfrage mit der Bibliothek httr machen würden. Wie die funktioniert, hat der Entwickler hier beschrieben.

So sah es am Ende aus

Das Ergebnis habe ich dann in Inkscape auf einem Innenraumplan weiterbearbeitet. Es lief bei tz.de: „Gehzeitenplan: So kommen Sie zur Fuß durchs U-Bahnetz“.

Der Gehzeitenplan für die tz.