osm类别或类型的否定

问题描述:

如果您搜索意大利布雷西亚周围的机场(aeroway = aerodrome),您还将收到一个军用机场的命中,该机场恰好也被标记为机场(标记为:aeroway =机场,土地利用=军事,军事=机场)。为了避免这种情况,我想搜索aeroway = aerodrome,但不包括[军事]。我试过了 [!军事]和[军事〜“^ $”]。有什么建议么?osm类别或类型的否定

我知道,这种特殊情况可能并不常见,但否定多分类元素的概念很有用。多分类元素并不罕见。一般来说,它们似乎是免费的,没有冲突,所以它不是问题。我也意识到,我可以通过一些后端处理来消除冲突。我并不期望有军用机场出现在商业机场。

无论如何,这里是我的查询的缩短版本。我包括完整的查询节点,方式和关系:

http://overpass-api.de/api/interpreter? 
data=[out:json][timeout:25][bbox:45.400861,9.868469,45.641408,10.542755]; 
(node[aeroway~%22aero|term|heli%22][! military]; ...) out etc 

或:

http://overpass-api.de/api/interpreter? 
data=[out:json][timeout:25][bbox:45.400861,9.868469,45.641408,10.542755]; 
(node[aeroway~%22aero|term|heli%22][military~%22^$%22]; ...) out etc 

如果您尝试运行它,你需要有方式和关系。另外,正如你所看到的,我并不完全要求aeroway =机场。我在直升机场包括终端和变体。我的经验是,一些机场只被标记为“终端”,所以如果你正在寻找一个机场,要求“机场”是不够的。

为否定正确的语法如下:

[military !~ ".*"] 

请参阅documentation on the OSM wiki for details