[Talk-de] Overpass-Anfragen: großes Gebiet, nur einige Punkte

Roland Olbricht roland.olbricht at gmx.de
Do Dez 27 15:26:00 UTC 2012


Hallo,

danke für die Anfrage. Das Beispiel kommt dann gleich mit auf die 
Beispielseite.

> Wie bekomme ich mit einer Overpass-Abfrage die Punkte innerhalb eines
> Gebietes hin, also zum Beispiel alle Apotheken in Deutschland?

area[name="Deutschland"];node(area)[amenity=pharmacy];out;

Die Abfrage sollte deutlich unter 3 Minuten brauchen (hat beim Testen 30 
Sekunden gebraucht), ansonsten bitte

[timeout:900];area[name="Deutschland"];node(area)[amenity=pharmacy];out;

> Wenn ich mit <area-query> und eingebetteter <query> arbeite, versucht
> Overpass erst einmal, alle Punkte innerhalb des Gebiets zu kriegen,
> und bricht dann irgendwann ab. Gibt's keine Möglichkeit, die
> Und-Verknüpfung anders zu formulieren als über Schachteln?

Die Und-Verknüpfung wird üblicherweise mit mehreren Clauses in der gleichen 
Query realisiert. Hier sind dies
(area)
und
[amenity=pharmacy]

Bei der Ausführung des Query-Statements werden diese dann verschachtelt, 
ähnlich dem Query-Plan einer SQL-Datenbank, so dass nicht alle Nodes geladen 
werden müssen. Das Grundprinzip ist in
http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Clauses
erläutert (leider bisher nur auf Englisch verfügbar).

Etwas anders sieht es im Spezialfall einer "area"-Clause für Ways oder 
Relations aus. Das ist leider noch nicht implementiert (es fehlt der 
Schnittest Ways mit Area-Grenzen), so dass hier die umständliche Abfrage 
unvermeidlich ist. Dafür muss ich leider auf später vertrösten, die 
Funktionalität steht aber auf der ToDo-Liste.

Viele Grüße,

Roland






Mehr Informationen über die Mailingliste Talk-de