【问题标题】:OpenStreetMap queries on history?OpenStreetMap 查询历史?
【发布时间】:2015-01-28 17:40:23
【问题描述】:

我想获得一个 OSM 数据库的修改列表,在给定的边界框中,在两个给定的日期之间并影响给定的一组标签。

有人知道怎么做吗?

任何命令行工具、Webapp(如 Overpass Turbo)或查询 API(如 XAPI)?

我已经看到可以通过地图的位置和缩放级别获取地图的历史记录(例如:http://www.openstreetmap.org/history#map=16/45.9605/5.3391),但这会返回包含当前地图之外的修改的修改组。

我还看到了history browser 来浏览给定对象(节点、方式或关系)的历史记录。

【问题讨论】:

  • 您是否已经看过 Overpass API 的 atticdiff 语句?
  • 这个“差异”正是我想要的,因为我要更新的数据与 OverpassTurbo 脚本相关联。问题是我的脚本是 Overpass XML 语言,我不知道在哪里写 'diff' 表达式。例如,我有:
  • 经过一点测试,它可以做到 但如果我尝试 ,我收到以下错误:Unknown attribute "diff" in元素“osm脚本”
  • diff 在 Overpass XML 中转换为 <osm-script date="2012-09-21T15:00:00Z" from="2012-09-14T15:00:00Z" timeout="240">。要了解 XML 格式的 Overpass QL 查询是什么样的,您始终可以使用 convert form 或使用 overpass turbo 中的相同功能。

标签: openstreetmap overpass-api


【解决方案1】:

我们发现的最佳解决方案是使用 Overpass-Turbo“差异”功能。

这是我用来在给定边界框中更改道路的 XML 脚本,在 2 个日期之间:

<osm-script date="2014-09-21T15:00:00Z" from="2012-09-14T15:00:00Z">
  <union>
    <query type="way">
      <has-kv k="highway"/>
    <bbox-query {{bbox}}/>
    </query>
  </union>
  <print mode="body"/>
  <recurse type="down"/>
  <print mode="skeleton" order="quadtile"/>
</osm-script>

这是 Overpass QL 中的等价物:

[diff:"2012-09-14T15:00:00Z","2014-09-21T15:00:00Z"];
(
  way["highway"]({{bbox}});
);
out body;
>;
out skel qt;

【讨论】:

    【解决方案2】:

    Overpass 的 AtticDelta 功能可能会对您有所帮助。它允许您查询历史数据。您可以使用这些附加过滤器扩展任何标准查询。

    有一些关于该主题的文档http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Attic_data_.28.22date.22.29

    【讨论】:

      猜你喜欢
      • 2017-05-11
      • 2019-03-20
      • 1970-01-01
      • 1970-01-01
      • 2019-01-27
      • 1970-01-01
      • 2013-01-27
      • 2021-04-28
      • 2017-11-11
      相关资源
      最近更新 更多