如何在Overpass Turbo中查询存在任意值的指定标签的OSM要素?
你用idescat:comarca='.'查询无结果,是因为Overpass QL里等号代表精确匹配,这条语句只会返回标签值恰好是单个点的要素,自然不符合你的需求。
如果要匹配所有只要带idescat:comarca标签、不限制标签具体值的要素,直接在查询条件里写标签名即可,不需要加等号和值。如果你想用正则匹配任意非空值,需要把等号换成波浪号~,写成idescat:comarca~'.'才能生效。
优化后的完整查询
考虑到加泰罗尼亚的县级行政区都是OSM的relation类型,你可以直接过滤relation减少冗余数据,查询写法如下:
[out:json][timeout:25]; ( // 匹配所有带idescat:comarca标签的7级行政区 relation["idescat:comarca"]["admin_level"="7"]({{bbox}}); ); out body; >; out skel qt;
如果需要覆盖范围不局限于当前视口的bbox,也可以限定在加泰罗尼亚行政区范围内查询,避免返回西班牙其他地区同级别行政区:
[out:json][timeout:25]; // 先定位加泰罗尼亚的行政区relation relation["name"="加泰罗尼亚"]["admin_level"="6"]->.catalonia; // 在加泰罗尼亚范围内查所有comarques ( relation["idescat:comarca"]["admin_level"="7"](area.catalonia); ); out body; >; out skel qt;
内容的提问来源于stack exchange,提问作者G. Macia
相关产品推荐
相关产品推荐

