2

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

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

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

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

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

在我的特定应用程序中,我只想知道是否有任何以“名称”开头的标签......所以我想做的就是将它放入 API 中:(["^name"]因为在这个 API 中“^”表示“以”)。但当然它会搜索文字“^name”并且什么也不返回。

有一些解决方法吗?

4

1 回答 1

3

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

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

还有一个 DIFFERENCE 和协商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"];
于 2015-06-23T10:41:15.840 回答