Hallo Community,
es geht darum, alle Golf-Fairways außerhalb von eines gemappten Golfplatzes (leisure=golf_course) zu finden. Overpass-Link
Nach Studium der Anleitung dachte ich, dass die folgende Abfrage funktionieren müsste:
[out:json][timeout:800][bbox:{{bbox}}];
area[leisure=golf_course];
out body;
(way[golf=fairway];)->.fairways;
(.fairways; - way[golf=fairway](area););
out geom meta;
Allerdings werden weiterhin alle Fairways gefunden, die Differenzbildung funktioniert nicht! Warum?
[out:json][timeout:800][bbox:{{bbox}}];
area[leisure=golf_course];
out body;
(way[golf=fairway](area);)->.golfcoursefairways;
(way[golf=fairway];)->.fairways;
(.fairways; - .golfcoursefairways;);
out geom meta;
(In den Overpass-Beispielen wird bei der Differenz immer eine Ergebnis-Variable genommen, statt die Abfrageformel direkt zu verwenden.)
Scheint zumindest gemäß diesem Testgebiet zu funktionieren …
Du musst jetzt nur noch einen Weg außerhalb verifizieren.
fx99
(Fx99)
October 2, 2020, 6:52pm
#3
Nach einigem Probieren ergab sich folgende Overpass Abfrage http://overpass-turbo.eu/s/YDz
[out:json][timeout:60][bbox:{{bbox}}];
way[leisure=golf_course];
map_to_area ->.b;
way(area.b)[golf=fairway] -> .fairGolf;
// .fairGolf out;.fairGolf >;out geom;
way[golf=fairway] -> .fairAll;
//.fairAll out;.fairAll >;out geom;
(way.fairAll; -way.fairGolf;);
out; > ; out geom;
im Gegensatz zu
area[leisure=golf_course];
das alle golf_course weltweit (siehe Areas: 28040 rechts unten im Fenster) findet, bewirkt
way[leisure=golf_course];
map_to_area ->.b;
dass nur die golf_course im aktuellen Fenster verwendet werden.
Der Rest sucht erst die fairways innerhalb der golf_course area .b , dann alle fairways und bildet schließlich die
Differenz.
Nachtrag: http://overpass-turbo.eu/s/YDA Abfrage mit ein paar Kommentaren!
axelr
October 2, 2020, 7:17pm
#4
@fx99 : damit fehlen die multipolygone leisure=golf_course
Zufällig entdeckt https://www.openstreetmap.org/relation/2212411
fx99
(Fx99)
October 2, 2020, 7:43pm
#5
Danke für den Hinweis.
Sollte einfach zu lösen sein:
// alle golf=fairway außerhalb leisure=golf_course
[out:json][timeout:60][bbox:{{bbox}}];
// suche alle way/rel[leisure=golf_course] in bbox
(way[leisure=golf_course];
rel[leisure=golf_course];
);
// convert to area
map_to_area ->.golfcourse;
// golf=fairway innerhalb leisure=golf_course
way(area.golfcourse)[golf=fairway] -> .fairGolf;
// .fairGolf out;.fairGolf >;out geom;
// alle golf=fairway
way[golf=fairway] -> .fairAll;
//.fairAll out;.fairAll >;out geom;
// Differenz und Ausgabe
(way.fairAll; -way.fairGolf;);
out; > ; out geom;
Jo_Cassel
(Jo Cassel)
October 3, 2020, 1:35pm
#6
fx99:
[…]
im Gegensatz zu
area[leisure=golf_course];
das alle golf_course weltweit (siehe Areas: 28040 rechts unten im Fenster) findet, bewirkt
way[leisure=golf_course];
map_to_area ->.b;
dass nur die golf_course im aktuellen Fenster verwendet werden.
[…]
Hatte mich auch schon gewundert, dass die Originalabfrage 7MB liefert.
(Wobei sich mir aber die Frage stellt, welchen Sinn hier eine Fenster-reduzierte Abfrage machen soll, denn dort leisure=golf_course + golf=fairway anzuzeigen reicht ja eigentlich um Probleme zu finden bzw. zu sehen)
Grundsätzlich aber eine geometrisch interessante Sache, die IMHO in
https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_API_by_Example
gehört - konnte dort zumindest nix vergleichbares finden.
fx99
(Fx99)
October 3, 2020, 2:26pm
#7
Habs mal eingefügt:
https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_API_by_Example#golf.3Dfairway_outside_leasure.3Dgolf_course
[bbox:{{bbox}}] wird aber ungewöhnlich angezeigt:
[bbox:(bbox={{{minlon}}},{{{minlat}}},{{{maxlon}}},{{{maxlat}}})]
Jo_Cassel
(Jo Cassel)
October 3, 2020, 2:50pm
#8
Das ging ja schnell … Du willst wissen, warum sich das OSM-Wiki da so seltsam verhält?
Die Stelle finde ich passend, schau Dir mal dan Gesamtzusammenhang an
https://wiki.openstreetmap.org/w/index.php?title=Overpass_API/Overpass_API_by_Example&action=edit§ion=21
so wie ich das auf die Schnelle sehe, sind die Code-Beispiele in eine “{{OverpassTurboExample…”-Vorlage integriert.
Die
==== Pub tour in Dublin ====
dagegen nicht - sollte nicht unbedingt Vorbild sein
Nachtrag:
nach Bearbeitungen, auch in der Überschrift, ist der Link:
https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_API_by_Example#golf.3Dfairway_outside_leisure.3Dgolf_course