Re: [Talk-de] Overpass API 0.7.4: Differenz-Operator

2013-08-03 Diskussionsfäden Roland Olbricht

 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).
[...]
 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?

Namen sind Schall und Rauch, und ich bin grundsätzlich offen für eine 
systematische Umbenenneung. Bisher haben die Statements ihre Namen von C++ 
bezogen (und dort heißt es in der sTL set_union, set_intersection und 
set_difference. Die Benennung von recurse (besser wäre traverse, follow-
link oder einfach follow) ist ebenso wie die sorgsam wieder vermiedene 
Bezeichnung clause (besser wohl conditional) dagegen ein Betriebsunfall, 
mit dem ich auch nicht glücklich bin.

Generell ergäbe es durchaus Sinn, sich eher an SQL zu orientieren, da 
vermutlich mehr Datennutzer mit SQL als mit fortgeschrittenem C++ vertraut 
sind. Das gibt aber insgesamt nochmal einen neuen Dialekt, so dass ich die 
Idee notieren würde, wenn für eine sehr viel spätere Version 1.0 eine 
Generalüberholung der Sprache ansteht. Andere leidige Themen sind z.B. die 
Reihenfolgen Lat-Lon versus Lon-Lat oder die Frage, wo genau ein Semikolon 
stehen muss oder darf. Vermutlich gibt es weitere solche Punkte.

Es sind aber auch Themen, die endlos viel Zeit vereinnahmen können, so dass 
ich in den nächsten Monaten erst einmal noch fehlende Funktionalität 
nachrüsten möchte und Syntax-Diskussionen zurückstelle.

Viele Grüße,

Roland


___
Talk-de mailing list
Talk-de@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-de


[Talk-de] Overpass API 0.7.4: Differenz-Operator

2013-08-02 Diskussionsfäden Roland Olbricht
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


Re: [Talk-de] Overpass API 0.7.4: Differenz-Operator

2013-08-02 Diskussionsfäden Stefan Keller
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