Overpass API 0.7.4: the difference operator

Dear Co-mappers,

The new release 0.7.4 of Overpass API has just been deployed on
http://overpass-api.de/
The Rambler instance will continue to run version 0.7.3 for some days in case
of unexpected flaws in the new version. A lot of minor bugs have been fixed.
More important, the query for ways on small bounding boxes is now more
efficient. This speeds up
http://overpass.apis.dev.openstreetmap.org/
the beta prototype for a popup overlay on the main page.

I’ve also made two extensions in the syntax: The use of Global Bounding Boxes
will be subject of a later mail to talk@ when the newest version of the JOSM
plugin mirrored_download has been deployed.

Now I talk about the difference operator: It simplifies the kind of searches
“every object that has property (or is an) X, but hasn’t property (or is an)
Y”. For example, all nodes that have a value for “maxheight” but aren’t part
of a street (a way with tag “highway”):

http://overpass-turbo.eu/s/Ib

// New in Overpass 0.7.4: the difference operator

[bbox:50.6,7.0,50.8,7.3];
(
node[maxheight]; // All nodes witha value for “maxheight”

(way[highway];>;); // that aren’t part of any kind of street
);
out;

For the very common case “has tag X, but not tag Y” I suggest to carry on with
“[…!~…]”. This is more efficient than the difference operator:

http://overpass-turbo.eu/s/Ic

// New in Overpass 0.7.4: the difference operator
//
// If the negation only covers that a certain tag is absent, you may prefer
// the tag negation operator. This operator is faster than difference.

[bbox:50.7,7.0,50.75,7.1];
( way[highway=residential][name!~‘.’]; // ways with tag “highway”, but
without tag “name”

;
);
out;

All details are given in the wiki:
http://wiki.openstreetmap.org/wiki/Overpass_API/versions

Cheers,

Roland