Bitte um Hilfe bei einer Overpass Abfrage und Weiterverarbeitung der Daten

Hallo zusammen,

ich untersuche gerade das Radverkehrsnetz einer Stadt. Dazu hätte ich folgende Fragen:

1. Ist folgende Abfrage verbesserungswürdig? Ich bin mir sicher, dass sich einige Abfragen doppeln, aber um selbst den Überblick zu behalten was ich da alles abfrage habe ich es etwas detaillierter aufgeschrieben (auch zu Dokumentations- und Reproduktionszwecken).

[out:json][timeout:3600][maxsize:1073741824];

area[name=“XY”]->.searchArea;
(
way(area.searchArea)[~“highway”~“cycleway”];

way(area.searchArea)[“cycleway”=“lane”];
way(area.searchArea)[“cycleway:right”=“lane”];
way(area.searchArea)[“cycleway:left”=“lane”];
way(area.searchArea)[“cycleway:both”=“lane”];
way(area.searchArea)[“cycleway”=“opposite_lane”];
way(area.searchArea)[“cycleway”=“opposite”];
way(area.searchArea)[“cycleway”=“shared”];
way(area.searchArea)[~“cycleway”~“lane”];

way(area.searchArea)[“cycleway”=“track”];
way(area.searchArea)[“cycleway:right”=“track”];
way(area.searchArea)[“cycleway:left”=“track”];
way(area.searchArea)[“cycleway:both”=“track”];

way(area.searchArea)[“highway”~“^(primary|secondary|tertiary)$”][“cycleway”=“sidepath”];

way(area.searchArea)[“highway”=“cycleway”][“bicycle=designated”];

way(area.searchArea)[“highway”=“path”][“foot”=“designated”][“bicycle”=“designated”][“segregated”=“yes”];

way(area.searchArea)[“highway”~“^(path|residential|service|track)$”][“foot”=“designated”][“bicycle”=“designated”][“segregated”=“no”];

way(area.searchArea)[~“traffic_sign”~“240”];

way(area.searchArea)[“bicycle_road”=“yes”];

way(area.searchArea)[“highway”=“footway”][“bicycle”=“yes”];
way(area.searchArea)[“sidewalk:right:bicycle”=“yes”];
way(area.searchArea)[“sidewalk:left:bicycle”=“yes”];
way(area.searchArea)[“sidewalk:both:bicycle”=“yes”];
way(area.searchArea)[~“traffic_sign”~“1022”];

way(area.searchArea)[~“bicycle”~“yes”];

way(area.searchArea)[“cycleway”~“yes|designated”];

way(area.searchArea)[~“traffic_sign”~“1000”];

);
out body;

;
out geom;

2. Ich kriege, sofern ich das beurteilen kann, durch diese Abfrage die gewünschten Ergebnisse.
Nun arbeite ich mit ArcGIS Pro und stehe vor dem Dateiformat-Problem. Shapefile-Konvertierung funktioniert (ogr2ogr), allerdings sind seeeehr viele Felder in den Attributen enthalten, weil jeder Way aus der Abfrage super viele zusätzliche Tags hat, die automatisch mit heruntergeladen werden und alles wird umbenannt, weil zu lang.
Die meisten haben dann eben “NULL” als Wert und viele davon interessieren mich auch gar nicht, aber ich denke das lässt sich nicht vermeiden oder?

Ich habe es mit QGIS jetzt einfach in eine .gdb konvertiert, damit ArcGIS damit klar kommt und habe dann gesehen, dass die Daten nicht nur Linien enthalten, sondern auch Areas (macht Sinn, da diese “bicylce=yes” enthalten wie z.B. Fußgängerzonen) und Punkte. Letzteres finde ich merkwürdig, da diese keine Tags enthalten, die ich abgefragt habe. Die meisten dieser Punkte sind Ampeln, was an sich nützlich ist, aber viele sind auch einfach nur irgendwelche Steine, die als Abtrennung dienen, aber nicht eines Radwegs, sondern an anderen Stellen. Woher kommen diese Punkte?

Könnt ihr mir vielleicht eine bessere Variante empfehlen, um die Daten in ArcGIS zu bearbeiten als Shapefile oder .gdb?

Beste Grüße und danke fürs Lesen! :slight_smile:

way(area.searchArea)[~“highway”~“cycleway”];
Warum hier ein regulärer Ausdruck? → highway=cylceway (da gibt es nichts ähnliches)

way(area.searchArea)[“cycleway”=“opposite”];
Das ist kein Radweg, sondern eine Einbahnstraße mit Fahrradfreigabe in Gegenrichtung.
Wenn dich die wirklich interessieren, dann brauchst du auch oneway:bicycle=no

way(area.searchArea)[“cycleway”=“shared”];
Sowas gibt es in Deutschland eigentlich nicht. In D sind damit nur die Piktogramme auf der Fahrbahn gemeint die Autofahrer daran erinnern, dass da auch Radfahrer fahren dürfen.

way(area.searchArea)[“highway”~“^(primary|secondary|tertiary)$”][“cycleway”=“sidepath”];
Was soll das sein? das ist ein Taggingfehler! cycleway=sidepath ist ein Attribut von highway=cycleway oder highway=path nicht aber von Straßen. Das ist ein Zusatzattribut. Die Wege bekommst du über cycleway und bicycle=designated.

way(area.searchArea)[“highway”=“cycleway”][“bicycle=designated”];
Warum nicht nur cycleway, das designated ist hier vollkommen redundant.

way(area.searchArea)[“highway”=“path”][“foot”=“designated”][“bicycle”=“designated”][“segregated”=“yes”];
way(area.searchArea)[“highway”~“^(path|residential|service|track)$”][“foot”=“designated”][“bicycle”=“designated”][“segregated”=“no”];
Warum hierfür zwei Abfragen?
Du suchst einfach nur bicycle=designated.

way(area.searchArea)[~“traffic_sign”~“240”];
Was ist mit 237, 241, 244 ?

way(area.searchArea)[~“traffic_sign”~“1022”];
Nicht alle 1022 betreffen Fahrräder - einige auch Motorräder

way(area.searchArea)[~“bicycle”~“yes”];
Damit hast du auch die Freigegebenen Fußwege und Fußgängerzonen. Daher kommen auch deine Flächen.

way(area.searchArea)[“cycleway”~“yes|designated”];
Das ist ein Taggingfehler

way(area.searchArea)[~“traffic_sign”~“1000”];
Die 1000 Schilder sind Hinweise mit Pfeilen - nur wenige sind Fahrradspezifisch.

Ich würde suchen nach:
bicycle=designated
highway=cycleway
bicycle_road=yes
~“cycleway”~“track|lane” (wenn benötigt auch shared., opposite.)

Mit bicycle=yes bekommst du alle möglichen Wege die irgendjemand als fahrradtauglich markiert hat.
Vermutlich interessieren dich nur die mit ausdrücklicher Fahrradfreigabe
ggf. highway=footway + bicycle=yes
sidewalk + ~“sidewalk.*bicycle”~“yes”

Als Vorlage, kannst du ggf. ergänzen.

[out:json][timeout:25];
// gather results
(

// Radwege, Fahrraddstraßen, Straßen mit Radwegen (nicht separat gemappt)
way[bicycle=designated](area.searchArea);
way[highway=cycleway](area.searchArea);
way[bicycle_road=yes](area.searchArea);
way[~"^cycleway"~"^(track|lane|opposite_track|opposite_lane)$"](area.searchArea);

// Fußwege Fußgängerzonen mit Radfreigabe und Straßen mit Fußwegen mit Radfreigabe (nicht separat gemappt)
way[highway=footway][bicycle=yes](area.searchArea);
way[highway=pedestrian][bicycle=yes](area.searchArea);
way[~"^sidewalk.*bicycle$"~"^yes$"](area.searchArea);
    );
// print results
out geom;

Ansonsten in die Daten schauen was noch fehlt und ggf. ergänzen. Kommt ja darauf an nach welchem Schema in deiner Gegend gemappt wird und welche typischen Fehler dort ggf. auftauchen.

Das könnte z.B. noch vorkommen
highway=footway, bicycle=permissive (falsch verstandenes permissiv)
highway=path, foot=designated, bicycle=yes (path statt footway)
segregated, bicycle=yes (nach Lübecker Methode tragen nichtbenutzungspflichtige Radwege nur bicycle=yes)

Das mit den vielen fast leeren Spalten ist ein generelles Problem, wenn man OSM-Attribute in einem Standard-GIS abbilden will. Im GIS ist ein festes Set an Attributen für eine Objektart vorgesehen, bei OSM kann man beliebig viele Attribute hinzufügen und die Doppelpunkt-Konstruktionen mit left/right/both/forward/backward und Namensräumen erhöhen noch die Attributnamensvielfalt.
Du könntest POSTGIS verwenden um die Daten zu speichern. Da kannst du mit dem Datentyp (Erweiterung) hstore arbeiten - das ermöglicht dir alle Attribute in nur einer Spalte abzulegen. In Postgis kannst du die Daten dann mittels SQL filtern und ausgewählte Attributspalten anlegen, so wie du es für deine Anwendung benötigst.

Erstmal vielen Dank!

Scheinbar bin ich bei ein paar Schildern durcheinander gekommen und bei einigen der Tags.
Die Tagging Fehler habe ich mit Absicht dazu genommen, weil es ein paar Stellen gab, die dadurch abgedeckt wurden. Also ja falscher Tag, aber hätten dann eben auch in meinen Daten am Ende gefehlt.
“cycleway”=“shared” ist tatsächlich überflüssig. Ich hab grad gesehen, dass das shared zwar vorkommt, aber nur in Verbindung mit “shared_lane”, was durch “way(area.searchArea)[~“cycleway”~“lane”];” schon abgedeckt war.

Woher kommen meine 100+ extra Wege durch folgendes denn?
way(area.searchArea)[“highway”~“^(primary|secondary|tertiary)$”][“cycleway”=“sidepath”];
Ich hatte das so verstanden, dass es manchmal separat kartierte Radwege gibt und manchmal wurden die einfach nur als Bestandteil der anliegenden Straße kartiert und nicht separat.

Woher meine Flächen kommen wusste ich ja schon, die Punkte kann ich mir nur nicht erklären.

An sich interessieren mich nur die ausdrücklich freigegebenen Radwege, aber ich dachte “bicycle=yes” sollte trotzdem berücksichtigt werden, da dort um die 1.000 Wege zu kamen, die in meiner Karte einiges an Lücken gefüllt hatten wo ansonsten keine Tags vorhanden waren.

Finde es ist halt schwierig “das richtige” Radverkehrsnetz einer Stadt zu ergründen, deshalb hab ich erstmal vieles mit reingenommen und dann evtl. aussortiert. Am Ende bringt es mir ja nichts, wenn irgendeine Variante eines Radwegs nicht mit abgefragt wurde und meine Karte Lücken hat.

Ich danke dir für die Vorlage und baue die dann mal noch etwas weiter aus! :slight_smile: