Die Bahnhofstrassen in jeder Schweizer Sprachregion
Letzhin hatte ich es bei einem Fiirabe-‘Getränk der Wahl’ von Bahnhofstrassen, wir diskutierten, ob’s ächt fast in jeder Gemeinde eine solche gibt. Und welches ächt die längste Bahnhofstrasse der Schweiz ist. Solche lustigen Fragen völlig over-engineered zu klären ist ja etwas, das ich gerne mache, drum das untenstehende.
Amanda Mc Cann hat ein Tool entwickelt, mit dem sogenante way
s in OpenStreetMap zusammenzufassen und zu analysieren.
Im OpenStreetMap Datenmodell werden Strassen1 manchmal in einzelne Segmente aufgeteilt, wenn Eigenschaften daran unterschiedlich sind, wie beispielsweise die Marktgasse in Bern, die als 11 einzelne way
s erfasst ist.
Amandas Tool osm-lump-ways
fasst die aus datentechnisch getrennten Dinge wieder zusammen, und macht es möglich, damit etwas Datenjonglage zu betreiben.
Mit dem Tool ist es z.B. möglich, nach zusammenhängenden ‘Bahnhofstrassen’ zu suchen und diese der Länge nach zu sortieren.
Damit lässt sich die Eingangs gestellte Frage nach der längsten Bahnhofstrasse der Schweiz ziemlich einfach beantworten.
Das Tool installiert sich flink so (sofern vorher auch brew install rust
gemacht wurde).
cd ~Dev
git clone git@github.com:amandasaurus/osm-lump-ways.git
cd osm-lump-ways
cargo install osm-lump-ways
Die Geofabrik bietet einen Service an, mit dem OpenStreetMap-Daten einfach runtergeladen werden können, sogenannte ‘Extracts`, die etwas einfacher im Handling sind, als die 132 GB an kompletten, komprimierten Daten.
Ein einfacher Befehl wie unten und schwupps sind die 424 MB OpenStreetMap-Daten nur aus der Schweiz auf der Festplatte.
wget https://download.geofabrik.de/europe/switzerland-latest.osm.pbf
Nachdem mit ./osm-lump-ways -h
kurz die Hilfe des Tools durchgeschaut wurde ist es einfach, die längste Bahnhofstrasse der Schweiz rauszuklauben, nämlich mit ./osm-lump-ways -i switzerland-latest.osm.pbf -f highway -f name~"[b|B]ahnhof" -o ch-bahnhof.geojson --only-longest-n-per-file 1
.
Der Aufruf sucht im neuesten Export aus der Schweiz nach allen highway
-Tags, führt diejenigen mit dem Namen Bahnhofstrasse zusammen und schreibt die längsten zusammenhängenden davon in eine geoJSON-Datei.
“Leider” ist die so gefundene Bahnhofstrasse die als Fläche erfasste Fussgänger-zone am Bahnhof in Zürich und nicht ganz das was wir suchen.
Mit kurzer Nachhilfe von Amanda können wir den Aufruf durch -f highway≠pedestrian
erweitern um Trottoirs und Fussgängerzonen auszuschliessen.
Also liefert uns
./osm-lump-ways -i switzerland-latest.osm.pbf -f highway -f highway≠pedestrian -f name~"[b|B]ahnhof" -o ch-bahnhof.geojson --only-longest-n-per-file 1
./osm-lump-ways -i switzerland-latest.osm.pbf -f highway -f highway≠pedestrian -f name~"la [g|G]are" -o ch-gare.geojson --only-longest-n-per-file 1
./osm-lump-ways -i switzerland-latest.osm.pbf -f highway -f highway≠pedestrian -f name~"[s|S]tazion" -o ch-stazion.geojson --only-longest-n-per-file 1
./osm-lump-ways -i switzerland-latest.osm.pbf -f highway -f highway≠pedestrian -f name~"[s|S]taziun" -o ch-staziun.geojson --only-longest-n-per-file 1
die längste ‘Bahnhofstrasse’, die längste ‘Rue de la Gare’, die längste ‘Via della Stazione’ sowie die längste ‘Via de la Staziun’ jeweils als geoJSON-Datei. Diese sind als Karte unten eingebunden.
Das Spiel können wir mit
./osm-lump-ways -i switzerland-latest.osm.pbf -f highway -f highway≠pedestrian -f name~"[b|B]ahnhof" -o ch-bahnhof-all.geojson
./osm-lump-ways -i switzerland-latest.osm.pbf -f highway -f highway≠pedestrian -f name~"la [g|G]are" -o ch-gare-all.geojson
./osm-lump-ways -i switzerland-latest.osm.pbf -f highway -f highway≠pedestrian -f name~"la [s|S]tazion" -o ch-la-stazion-all.geojson
./osm-lump-ways -i switzerland-latest.osm.pbf -f highway -f highway≠pedestrian -f name~"la [s|S]taziun" -o ch-la-staziun-all.geojson
wiederholen und wir haben dann jeweils alle solchen in einer jeweiligen Datei. Diese alle geoJSON-Dateien schieben wir in eine sogenannte uMap und stellen für jede Sprachregion eine hübsche Farbe ein. Und Voilà, eine Karte davon ist unten eingebunden zu sehen.
Die eben als
way
abgebildet werden. ↩︎