在 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"];
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"];