Wie ich bereits in einem Beitrag vom September 2022 angedeutet habe, werde ich meine Masterarbeit im Rahmen des UNIGIS-Studiums in Salzburg zum Thema eines verbesserten Fußgänger-Routings schreiben. Dabei werde ich mich spezifisch mit „informellen Querungen“ abseits von Knotenpunkten auseinandersetzen. Mein Interesse gilt unabhängig davon gleichermaßen dem Radverkehr. Vor dem Studium habe ich mich mit Routing-Algorithmen sehr wenig auseinandergesetzt. Daher habe ich mich gefreut, dass im siebten Pflichtmodul „Räumliche Analysemethoden“ die gängigen GIS-Werkzeuge für die Netzwerkanyalyse im Detail thematisiert wurden – freilich ohne einen vertieften Einstieg in die zugrundeliegenden Algorithmen wie den bekannten von Edsger Wybe Dijkstra.
Im Modul stand das Verkehrsmittel Fahrrad bei der betreffenden Aufgabe im Mittelpunkt. Nun ist es eine Besonderheit, dass gerade unmotorisierte Verkehrsteilnehmende zum Beispiel bergauf deutlich langsamer unterwegs sind als bergab. Das gilt speziell für Radfahrende, da für sie das Bergabfahren mit keinerlei Kraftaufwand verbunden ist, wohingegen das Bergabgehen durchaus kratfaufwändig ist. (Hier in Küstennähe ist natürlich auch der Wind ein entscheidender Faktor für richtungsbezogene Unterschiede, aber wir bleiben mal bei statischen Parametern.)
Das betreffende siebte Modul habe ich mit QGIS gelöst, obwohl der Modulbetreuer die Aufgaben auf die Funktionalitäten von ArcGIS Pro ausgerichtet hat. Mir war es wichtig, auch in diesem Modul mein Lernen hinsichtlich der FOSSGIS-Programme fortzusetzen. Nun ist es aber noch immer so, dass manche Werkzeuge in QGIS etwas weniger komfortabel sind als im ESRI-Produkt. So bieten die Standard-Geoprozessierungswerkzeuge in QGIS zwar die Möglichkeit, ein richtungsspezifisches Feld bei der Berechnung der schnellsten Route zu setzen, aber keinen direkten Weg, um abhängig von der Zeichenrichtung der jeweiligen Netzkante unterschiedliche Geschwindigkeitswerte – zum Beispiel unterschiedliche Felder je nach Zeichenrichtung – zu verwenden. Auch auf die Gefahr hin, dass wir irgendetwas übersehen haben: Bei GIS StackExchange war man derselben Ansicht.
Und dort wurde letztendlich auch das Verfahren vorgeschlagen, das ich dann für die Lösung der betreffenden Aufgabe gewählt habe. Ausgangspunkt ist dabei, dass ein fertiger Netzwerk-Datensatz vorliegt, der separate Felder für die Geschwindigkeit und die Dauer in Sekunden pro Netzkante für beide Zeichenrichtungen separat umfasst (etwa speed_fw, sec_fw, speed_bw, sec_bw, im Folgenden beispielhaft für die Illustration verwendet). Dann ist das Vorgehen entsprechend dem Vorschlag von Tom Brennan und im Detail angepasst wie folgt:
- Zwei (temporäre) Layer-Duplikate des Netzwerk-Datensatzes erstellen,
- im ersten Duplikat für die Vorwärts-Richtung speed_fw in speed und sec_fw in sec ändern sowie speed_bw und sec_bw löschen, im zweiten Fall für die Rückwärts-Richtung umgekehrt,
- im Vorwärts-Fall ein Feld direction mit dem Wert forward erstellen, im Rückwärts-Fall ein ebensolches Feld mit dem Wert backward.
- Beide Layer zusammenführen und das Resultat als Grundlage für die Ermittlung der schnellsten Route mit richtungsspezifischen Geschwindigkeitswerten verwenden (mit dem Werkzeug Kürzester Weg – Punkt zu Punkt).
Der dritte Schritt ist dabei nicht unbedingt notwendig, wenn man die Layer-Duplikate gleich als forward und backward benennt, da QGIS beim Zusammenführen der Layer ein Feld erstellt, das den Namen des Layers enthält, aus dem das jeweilige Objekt stammt.
Der Abschluss des betreffenden Studienmoduls liegt nun schon einige Wochen zurück und ich habe den beschriebenen Prozess seinerzeit händisch durchgeführt. Auf dem Weg zu einem Plugin, das die beschriebene Aufbereitung des Netzwerkdatensatzes übernimmt, habe ich nun zunächst ein grafisches Modell erstellt. Die grafische Modellierung in QGIS hat es mit sehr angetan, auch im optionalen Modul Automated Workflows with QGIS & Python, innerhalb dessen dann der Export des Modells in ein Python-Skript und die anschließende Anpassung und Ergänzung weitere spannende Schritte waren.
Ein Plugin kommt noch, nachfolgend erst einmal das grafische Modell als Bild und zum Herunterladen.
Hier ist das gute Stück zum Herunterladen:
directional_geometries_for_shortest_path.model3
Vielleicht nützt es ja der/dem einen oder anderen. Dann viel Spaß damit! Ich hatte meinen damit schon und bin gespannt, was ich in Sachen Netzwerkanalyse noch so entdecken werde.