在Overpass API中有没有办法在标签存在时使用逻辑运算符?

时间:2015-06-22 16:18:51

标签: openstreetmap overpass-api

Overpass API语言指南在匹配标记值时允许逻辑运算符...例如:["name"~"holtorf|Gielgen"]将返回名称= holtorf或name = Gielgen的任何对象。

您还可以组合条件,它们将成为AND ...例如:

["name"]["name"="holtorf"]。用于搜索具有“name”标签且标签名称等于“holtorf”的内容的方法。

但我想要的是一个OR运算符......类似于:

["name"="holtorf"]|["name:eng"holtorf"]

在我的特定应用程序中,我只想知道是否有以“name”开头的任何标记...所以我想要做的是将其放入API中:["^name"](原因在于此API“^”表示“以”开头“)。但当然它会搜索文字“^ name”并且不返回任何内容。

是否有一些解决方法?

1 个答案:

答案 0 :(得分:1)

没有OR操作,但您可以使用UNION

(
  way["name"="holtorf"];
  way["name:eng"=holtorf"]
);

还有DIFFERENCE和谈判http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Difference

在您的特定情况下,您可以使用键值regexpressions匹配。 http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Key.2Fvalue_matches_regular_expression_.28.7E.22key_regex.22.7E.22value_regex.22.29

[~"^name.*$"~"^holtorf$"];

//or only for key
[~"^name.*$"="Holtorf"];