x

Re: Fragen zu Overpass Turbo


Geschrieben von mmd (Gast) am 20. Mai 2017 15:18:21: [flux]

Als Antwort auf: Fragen zu Overpass Turbo geschrieben von ethylisocyanat (Gast) am 20. Mai 2017 14:21:

ethylisocyanat wrote:

Könnte mir bitte jemand den Syntax von (._;>;); erklären? Was macht das genau?

Siehe http://wiki.openstreetmap.org/wiki/Over … ss_QL#Item:

Es nimmt also das Ergebnis der vorhergehenden Query (also die landuse Ways), ermittelt alle Knoten dazu und stellt das ganze wieder zurück in die unbenamste Menge "._" zurück.

Dieses "._" kann man sich einfach als eine Art Variable vorstellen, die Mengen enthält. Normalweise werden sie in der Query nicht mit ausgeschrieben, weil sie implizit gelten. Sonst würde das so aussehen:

way(area.searchArea)[landuse=landfill]␣->␣._;␣␣␣␣//␣explizit␣Ablage␣des␣Ergebnisses␣in␣._
(._;>;)␣->␣._␣;␣␣␣␣␣␣//␣Nimm␣._,␣ermittle␣Nodes␣dazu,␣und␣merke␣dir␣das␣ganze␣wieder␣in␣._
._␣out␣meta;␣␣␣␣␣␣␣␣␣//␣out␣meta␣gibt␣Ergebnis␣der␣Menge␣._␣aus

In Pseudocode:

var␣menge1␣=␣way(area.searchArea)[landuse=landfill];
var␣menge2␣=␣menge1␣+␣menge1.mach_Knoten_daraus();
print␣menge2;

Das Recurse Down ">" kann für Relationen noch mehr, das habe ich der Einfachheit halber aber hier weggelassen.

Eselsbrücke: wenn man das ">" rein bildlich betrachtet, macht man aus etwas größerem (links) etwas kleines (rechts). Die Reihenfolge groß nach klein ist bei OSM: Relation -----> Weg -----> Knoten.