Запросы OpenStreetMap по истории?

Я хотел бы получить список изменений в базе данных OSM в заданной ограничивающей рамке между двумя заданными датами и влияющих на заданный набор тегов.

Кто-нибудь знает как это сделать?

Любой инструмент командной строки, веб-приложение, такое как Overpass Turbo, или API запросов, например XAPI?

Я видел, что можно получить историю карты по ее местоположению и уровню масштабирования (пример: http://www.openstreetmap.org/history#map=16/45.9605/5.3391), но это возвращает группы модификаций, которые содержат модификации вне текущей карты).

Я также видел браузер истории для просмотра истории данного объекта (узла, пути или отношения ).


person superrache    schedule 19.01.2015    source источник
comment
crosspost: gis.stackexchange.com/questions/130907/osm- запросы по истории   -  person scai    schedule 20.01.2015
comment
Вы уже видели чердак Overpass API и diff?   -  person scai    schedule 20.01.2015
comment
это 'diff' - именно то, что я искал, потому что данные, которые я хочу обновить, связаны со скриптом OverpassTurbo. Проблема в том, что мои скрипты написаны на языке Overpass XML, и я не знаю, где написать выражение diff. Например, у меня есть: ‹osm-script output = xml timeout = 900› ‹union› ‹тип запроса = способ› ‹has-kv k = Highway /› ‹bbox-query {{bbox}} /› ‹/query› ‹/Union› ‹режим печати = тело /› ‹тип рекурсии = вниз /› ‹режим печати = порядок скелетов = квадтиль /› ‹/osm-script›   -  person superrache    schedule 21.01.2015
comment
после небольшого теста он работает, чтобы сделать ‹osm-script output = xml timeout = 900 date = 2012-09-14T15: 00: 00Z› но если я попробую ‹osm-script output = xml timeout = 900 diff = 2012-09 -14T15: 00: 00Z, 2012-10-14T15: 00: 00Z ›, я получаю следующую ошибку: Unknown attribute diff in element osm-script   -  person superrache    schedule 21.01.2015
comment
diff переводится в <osm-script date="2012-09-21T15:00:00Z" from="2012-09-14T15:00:00Z" timeout="240"> в Overpass XML. Чтобы узнать, как выглядит запрос Overpass QL в формате XML, вы всегда можете использовать форму преобразования или используйте ту же функцию из турбо эстакады.   -  person mmd    schedule 21.01.2015
comment
да! вы правы, я забыл использовать функцию convert, чтобы найти эквивалент. Большое спасибо! Я думаю, что такой запрос хорошо подходит для моих нужд.   -  person superrache    schedule 22.01.2015


Ответы (2)


Лучшее решение, которое мы нашли, - использовать функцию "diff" Overpass-Turbo.

Вот XML-скрипт, который я использую для получения изменений на дорогах в заданной ограничивающей рамке между двумя датами:

<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;
person superrache    schedule 28.01.2015

Функция Overpass 'Чердак и Дельта может вам помочь. Он позволяет запрашивать исторические данные. Вы можете расширить любой стандартный запрос с помощью этих дополнительных фильтров.

По этой теме есть документация http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#Attic_data_.28.22date.22.29

person Thomas Skowron    schedule 21.01.2015