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

in the Overpass API is there a way to use logical operators on tag existence?

Overpass API 语言指南在匹配标签值时允许使用逻辑运算符...例如:["name"~"holtorf|Gielgen"] 将 return 具有 name=holtorf 或 name 的任何对象=吉尔根。

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

["name"]["name"="holtorf"]。表示搜索具有标签 "name" 且标签名称等于 "holtorf" 的事物。

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

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

在我的特定应用程序中,我只想知道是否有任何以 "name" 开头的标签...所以我想做的是将其放入 API:["^name"](因为在 API 中,“^”表示 "starts with")。但它当然会搜索文字“^name”,return什么也没有。

有什么解决办法吗?

没有OR运算,但可以使用UNION

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

还有分歧和协商http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Difference

在您的特定情况下,您可以使用键值正则表达式匹配。 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"];