Hi,
wie sieht eine overpass-turbo-Abfrage aus, mit der ich nach Gebäuden oder auch z.B. Straßen suche, die nodes mit einem bestimmten tag auf ihrem äußeren way haben bzw. auch in ihrer Fläche (gilt dann natürlich nicht für Straßen) beinhalten?
Ok, mal ein konkretes Anwendungsbeispiel:
Ich suche ways mit dem tag ‘public_transport=platform’, auf denen nicht ein highway=bus_stop liegt.
Ggf. könnte man das erweitern: wenn die ‘platform’ als Polygon gezeichnet ist und kein ‘bus_stop’ auf dem äußeren way ist bzw. innerhalb dieser Fläche liegt.
Erst werden alle “platform” abgefragt, deren Knoten mit “bus_stop” ausgewählt, und die zu diesen Knoten gehörenden Wege aus der “platforms” Menge zurückgegeben.
Siehe auch Beispielsammlung –Gebäude mit entrance-Knoten
Um die “platform” ohne “bus_stop” zu bekommen wird hier noch die Differenz der Menge aus allen “platforms” minus derer mit “bus_stop” gebildet:
way[public_transport=platform]({{bbox}})->.platforms;
node(w.platforms)[highway=bus_stop];
way.platforms(bn)->.stop_platforms;
(.platforms; - .stop_platforms;);
(._;>;);
out meta;
Einen Knoten-in-Fläche (Punkt-in-Polygon) Filter, um “bus_stop” Knoten innerhalb von “platform” Flächen abzufragen, kennt die Overpass API meines Wissens nicht (?), das wäre eher was für PostGIS. In den neueren Overpass Funktionen bin ich aber noch nicht so drin, vielleicht könnte man es schon irgendwie hinkriegen.
Vor ein paar Jahren gab’s mal einen Prototypen, der das (mehr schlecht als recht) konnte: https://github.com/drolbr/Overpass-API/issues/77#issuecomment-67730679 - ist leider nicht mehr draus geworden. Macht aber nichts, weil das ganze Area-Konzept wohl nochmal auf den Prüfstand kommt, und dann hoffentlich nicht mehr an starre Regeln für eine Vorberechnung gebunden ist.
Danke, ikonor, für das Erstellen einer brauchbaren Abfrage, super! Ich habe hinter dem “way[public_transport=platform]” noch ein bus=yes hinzugefügt, damit nicht U-Bahnhöfe auftauchen, die naturgemäß nicht mit einem bus_stop versehen sind. Das hilft schon mal ungemein weiter, denn in Berlin wurden leider in der Vergangenheit bei vielen Bushaltestellen das hw=bus_stop entfernt (inzwischen wurde es in vielen Fällen wieder ergänzt), aber es gibt noch Lücken, die ich damit jetzt wenigstens teilweise abfragen kann.
Danke auch an mmd für die ergänzenden Infos. Wäre ja schön, wenn es hier eine Entwicklung gäbe.
Am Rande: Interessant finde ich ja, wenn ich mich recht erinnere, dass von manchen (auch hier im Forum) behauptet wurde, Adressen an Geschäfts-POI bräuchte es nicht, denn das ließe sich ganz leicht abfragen durch die Adresse am Gebäudeumriss. Nun scheint sowas aber doch kein Kinderspiel (mit der overpass) zu sein.
Hi,
unabhängig von obigem eine weitere Bitte um Hilfe:
Ich würde gerne bestimmte tags suchen, die mit einem bestimmten Editor verändert wurden (Hintergrund). Dafür müsste “created_by” der jeweiligen CS ausgelesen werden. Geht das mit overpass turbo?
Nein, das geht nicht. Overpass API kennt generell nur Nodes, Ways und Relations. Du kannst aber OSMCha dafür benutzen, da gibt’s m.W. einen solchen Changeset-Metadaten Filter.
Danke. Allerdings finde ich in OSMCha nicht die Möglichkeit, CS nach bestimmten ergänzten OSM-Keys (hier “traffic_signals:direction”) zu durchsuchen. Habe aber mit OSMCha noch nicht gearbeitet und übersehe deshalb vielleicht was?!
Es werden allerdings auch nur Changesets der letzten Bearbeitung von Ways mit dem Tag selektiert. Um wirklich Änderungen an “traffic_signals:direction” selbst zu finden, müsste man vermutlich den Full History Planet bemühen.
Hier der Ansatz - die weltweite Selektion per Overpass API funktioniert so aber nur bei relativ seltenen Keys:
Changesets der letzten Bearbeitung von Ways mit Key “traffic_signals:direction” weltweit in Overpass Turbo, liefert 1027 ways:
way["traffic_signals:direction"];
/*
out meta geom;
*/
make info changesets=set(changeset());
out;