Lieber Roland Hut ab wie du es schaffst, ein recht performantes und verlässliches OSM API für die weltweite OSM-DB zu implementieren - und es erst noch immer weiter auszubauen! Ich weiß, wovon ich spreche, wenn ich an den Betrieb des Kort Games denke.
Der Differenz-Operator ist eine sinnvolle Erweiterung. Nur bin ich mit der Benennung nicht so glücklich - wie mit anderen Syntax-Elementen ja auch/nicht (wie namentlich print und recurse). Diese Differenz gehört zu den "Set Operationen" und gemäss SQL Standard heissen die UNION, INTERSECT und EXCEPT - und sie werden unterstützt u.a. von PostgreSQL, MySQL/MariaDB, SQLPlus sowie von MS SQL Server und DB2. Nur Oracle weicht davon ab und kennt statt EXCEPT => MINUS. "Difference" ist mir zu nahe an "Intersect". Natürlich muss die Overpass API nicht SQL übernehmen, doch gibt SQL eine schöne theoretische Basis her (z.B. dass ein weiterer Operator "INTERSECT" heissen könnte :-). Ich schlage daher vor, lieber vom EXCEPT Operator/Statement zu sprechen. Was meinst du dazu? LG, Stefan Am 2. August 2013 17:54 schrieb Roland Olbricht <roland.olbri...@gmx.de>: > Liebe Mitmapper, > > eine neue Version der Overpass API, Version 0.7.4 steht auf > http://overpass-api.de > zur Verfügung. Auf der Rambler-Instanz folgt das Update in den nächsten Tagen. > Neben zahlreichen behobenen Bugs ist vor allem die Abfrage nach Ways und damit > auch Relationen in kleinen Bounding-Boxen effizienter geworden. Damit sollte > sich mit dem POI-Overlay-Prototyp > http://overpass.apis.dev.openstreetmap.org/ > jetzt zügig arbeiten lassen. > > An Erweiterungen der Syntax gibt es zwei: Zum einen "global deklarierte > Bounding-Boxen"; diese werde ich morgen genauer erläutern, wenn das > korrespondierende JOSM-Plugin mirrored_download sich aktualisiert hat. > > Zum anderen der Differenz-Operator. Er dient dazu, Suchen der Art "alle > Objekte die X haben/sind, aber nicht Y haben/sind" zu finden. Zum Beispiel > hier alle Nodes, die einen Wert für "maxheight" gesetzt haben, aber nicht Teil > einer Straße (d.h. eines ways mit Tag "highway") sind: > > http://overpass-turbo.eu/s/I6 > > // Neu in Overpass 0.7.4: Der Differenz-Operator > > [bbox:50.6,7.0,50.8,7.3]; > ( > node[maxheight]; // Alle Nodes mit irgendeinem Wert für "maxheight" > - > (way[highway];>;); // die nicht auf irgendeiner Form von Straße liegen > ); > out; > > Für den besonders häufigen Fall, dass es um "hat Tag X, aber nicht Tag Y" > geht, empfehle ich weiterhin die bekannte Syntax mit "[...!~...]". Diese > arbeitet effizienter als der Differenzoperator es kann. > > http://overpass-turbo.eu/s/I8 > > // Neu in Overpass 0.7.4: Der Differenz-Operator > // > // Wenn es bloß um nicht gesetzte Tags geht, sollten diese lieber > // als Bedingung aufgelistet werden und nicht als Differenz-Operator. > // Das funktioniert schneller > > [bbox:50.7,7.0,50.75,7.1]; > ( way[highway=residential][name!~'.']; // Ways mit Tag "highway", aber ohne > Tag "name". > >; > ); > out; > > Alle Details zur neuen Version gibt es im Wiki: > http://wiki.openstreetmap.org/wiki/Overpass_API/versions > > Viele Grüße, > > Roland > > > _______________________________________________ > Talk-de mailing list > Talk-de@openstreetmap.org > http://lists.openstreetmap.org/listinfo/talk-de _______________________________________________ Talk-de mailing list Talk-de@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-de