osm class 或类型的否定

Negation of osm class or type

如果您搜索意大利布雷西亚附近的机场 (aeroway=aerodrome),您还会搜索到军用机场,该机场恰好也被标记为机场(标记为:aeroway=aerodrome, landuse =军事,军事=机场)。为避免这种情况,我想搜索 aeroway=aerodrome 但排除 [military]。我试过了 [!军事]和[军事~“^$”]。有什么建议吗?

我意识到这种特殊情况可能很少见,但否定多类元素的概念很有用。多类元素并不少见。总的来说,它们似乎是互补的,而不是冲突的,所以这不是问题。我还意识到我可以通过一些后端处理来消除冲突的命中。没想到军用机场和商用机场一起出现

无论如何,这是我的查询的简化版本。我在完整查询中包括节点、方式和关系:

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=aerodrome。我包括直升机场的航站楼和变体。我的经验是有些机场仅标记为 "terminal",因此如果您正在寻找机场,仅要求 "aerodrome" 是不够的。

否定的正确语法如下:

[military !~ ".*"]

请参阅documentation on the OSM wiki for details