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

Antwort per Email an