Bitte um Hilfe bei Erstellung von overpass-turbo-Abfragen

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?

Danke und schöne Grüße

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.

Danke für Rat im Voraus

Diese Abfrage liefert erst mal alle “platform” mit “bus_stop” auf dem Weg:


way[public_transport=platform]({{bbox}})->.platforms;
node(w.platforms)[highway=bus_stop];
way.platforms(bn);
(._;>;);
out meta;

http://overpass-turbo.eu/s/BRy

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;

http://overpass-turbo.eu/s/BRz

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.

Es geht nur, wenn es eine passende Area gibt, was hier wohl nicht der Fall ist. Ansonsten geht das momentan auf der produktiven Instanz nicht.

Schade, ein paar sehr vage Ideen hätte ich sonst bei Gelegenheit vielleicht noch geprüft:

  • ich meine, ich hätte irgendwo mal was von “make area” oder so gelesen?
  • sowas wie limit 1 wenn “around” die Ergebnisse sortiert nach Entfernung vom Node liefern würde
  • poly Filter aus vorselektierten Ways (geom?)
  • Intersect Test mit around:0 und linestring aus Node point + Himmelsrichtungen oder so

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.

Overpass ist ja auch kein Geocoder… :sunglasses:

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?!

OSMCha kann nur nach Changesets filtern, nicht nach Tags. Ich wüsste auch kein anderes einfaches Tool, das beides kombinieren kann.

Habe mal einen manuellen Ansatz probiert und dabei nur ein Changeset durch Osmose Editor gefunden, bei dem überhaupt ein Weg mit “traffic_signals:direction” bearbeitet wurde, und da wurde nur “maxspeed” hinzugefügt:
https://www.openstreetmap.org/changeset/62146036
https://www.openstreetmap.org/way/166842646
http://osm.mapki.com/history/way.php?id=166842646

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:

  1. 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;

http://overpass-turbo.eu/s/D4R

Changeset ID Datei “ids-traffic_signals-direction.txt” mit Editor erstellt, Semikolon durch Zeilenumbruch ersetzt

  1. Changesets mit ‘created_by=Osmose Editor’ aus changesets-latest Datei filtern (nur Changesets nach 2012, die auch in Overpass API sind)

wget https://planet.openstreetmap.org/planet/changesets-latest.osm.bz2
osmium changeset-filter --after 2012-09-12T06:55:00Z changesets-latest.osm.bz2 -o changesets-latest-2012-.opl
grep 'created_by=Osmose%20%Editor' changesets-latest-2012-.opl > changesets-osmose-editor.opl
cat changesets-osmose-editor.opl | cut -d' ' -f1 | cut -c2- > ids-osmose-editor.txt

  1. Schnittmenge

comm -12 ids-traffic_signals-direction.txt ids-osmose-editor.txt

Ergebnis:


62146036