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

问题描述 投票:0回答:2

Overpass API 语言指南确实允许在匹配标签值时使用逻辑运算符...例如:

["name"~"holtorf|Gielgen"]
将返回 name=holtorf 或 name=Gielgen 的任何对象。

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

["name"]["name"="holtorf"]
。意味着搜索具有标签“name”且标签名称等于“holtorf”的事物。

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

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

在我的特定应用程序中,我只想知道是否有任何以“name”开头的标签...所以我想做的是将其放入API中:

["^name"]
(因为在此API中“^”意思是“开始于”)。但当然它搜索文字“^name”并没有返回任何内容。

有什么解决办法吗?

openstreetmap overpass-api
2个回答
5
投票

没有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"];

0
投票

你可以尝试这样的事情

node["place"~"village|city|town|metropolis"]["name"~"^A"](area:3602145268);
© www.soinside.com 2019 - 2024. All rights reserved.