Overpass API - 过滤掉非空标签

Posted

技术标签:

【中文标题】Overpass API - 过滤掉非空标签【英文标题】:Overpass API - filter out non-empty tags 【发布时间】:2016-12-24 03:21:34 【问题描述】:

从this question 开始,我正在尝试查询 Overpass API,以便它返回所有带有标签“自然”和“历史”的节点,其中标签“名称”在一组半径为 1500 米的坐标周围不是空的

到目前为止我所拥有的是

<union>
    <query type="node">
        <around radius="1500" lat="51.1263041473" lon="1.3268128927"/>
        <has-kv k="historic"/>
    </query>
    <query type="node">
        <around radius="1500" lat="51.1263041473" lon="1.3268128927"/>
        <has-kv k="natural"/>
    </query>
</union>
<print/>

这对两个关键字都有效,但不适用于标签“名称”不为空(请参阅:Overpass Turbo)

如何过滤掉任何带有标签“name”而不是 emtpy 的节点?

【问题讨论】:

【参考方案1】:

嗯,我刚刚找到了答案 - 我不知道如何将正则表达式放入查询中。现在我做:

<union>
<query type="node">
    <around radius="1500" lat="51.1263041473" lon="1.3268128927"/>
    <has-kv k="historic"/>
    <has-kv k="name" regv=".+"/>      
</query>
<query type="node">
    <around radius="1500" lat="51.1263041473" lon="1.3268128927"/>
    <has-kv k="natural"/>
    <has-kv k="name" regv=".+"/>
</query>

【讨论】:

你为什么不直接写&lt;has-kv k="name"/&gt;?在这种情况下,没有太多理由使用正则表达式。

以上是关于Overpass API - 过滤掉非空标签的主要内容,如果未能解决你的问题,请参考以下文章

djangorestframework:过滤相关字段

Gitlab API 按主题过滤项目(项目标签)

Gmail API Watch 未按标签过滤

overpass turbo下载openstreetmap数据出问题,missing translation

Soundcloud API - 轨道上的地理标签过滤返回 503 服务不可用

从 CLOB 列中过滤非 XML 数据