You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Overpass API筛选指定时间范围内新建的节点?

解决Overpass API筛选创建时间而非更新时间的节点问题

你遇到的问题其实是对newer参数的理解偏差——这个参数筛选的是节点最后被修改的时间,而不是节点最初被创建的时间,所以才会出现那些多年前创建、但后来被编辑过的节点也被返回的情况。

要获取真正在指定时间点之后创建的amenity=atm节点,有两种可行的方案:

方案一:客户端过滤(简单易实现)

先获取指定区域内所有ATM节点的完整元数据,之后在客户端代码里过滤创建时间:

[out:json][timeout:30];
node[amenity=atm]({{bbox}});
out meta;

这个查询返回的JSON结果中,每个节点的meta字段里会包含created_at属性,你只需要遍历结果,保留created_at值大于2018-04-01T00:00:00Z的节点即可。

方案二:Overpass查询内直接过滤(无需客户端处理)

利用Overpass QL的foreach和条件判断语法,在查询阶段就筛选出符合创建时间要求的节点:

[out:json][timeout:30];
node[amenity=atm]({{bbox}});
foreach -> .n(
  if(t["created_at"] >= "2018-04-01T00:00:00Z")
  {
    out meta;
  }
);

关键注意点

  • newer对应的是元数据里的timestamp(最后修改时间),而我们需要的是created_at(创建时间),这是两个完全不同的字段;
  • 极少数老旧的OSM元素可能缺失created_at元数据,但这种情况非常罕见,不影响大部分场景的使用。

内容的提问来源于stack exchange,提问作者nex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:16:21