osm类或类型的否定

时间:2016-01-04 18:23:12

标签: overpass-api

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

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

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

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

如果您尝试运行它,则需要包含方式和关系。 此外,正如您所看到的,我并不是要求航空航天=机场。我在直升机场包括终端和变种。我的经验是,有些机场只标记为"终端",所以如果你正在寻找机场,要求机场"还不够。

1 个答案:

答案 0 :(得分:0)

否定的正确语法如下:

[military !~ ".*"]

请参阅documentation on the OSM wiki for details