RU:Overpass API/Augmented Diffs

From OpenStreetMap Wiki
Jump to: navigation, search
Доступные языки — Overpass API/Augmented Diffs
· Afrikaans · Alemannisch · aragonés · asturianu · azərbaycanca · Bahasa Indonesia · Bahasa Melayu · Bân-lâm-gú · Basa Jawa · Basa Sunda · Baso Minangkabau · bosanski · brezhoneg · català · čeština · corsu · dansk · Deutsch · eesti · English · español · Esperanto · estremeñu · euskara · français · Frysk · Gaeilge · Gàidhlig · galego · Hausa · hrvatski · Igbo · interlingua · Interlingue · isiXhosa · isiZulu · íslenska · italiano · Kiswahili · Kreyòl ayisyen · kréyòl gwadloupéyen · Kurdî · latviešu · Lëtzebuergesch · lietuvių · magyar · Malagasy · Malti · Nederlands · Nedersaksies · norsk bokmål · norsk nynorsk · occitan · Oromoo · oʻzbekcha/ўзбекча · Plattdüütsch · polski · português · română · shqip · slovenčina · slovenščina · Soomaaliga · suomi · svenska · Tiếng Việt · Türkçe · Vahcuengh · vèneto · Wolof · Yorùbá · Zazaki · српски / srpski · беларуская · български · қазақша · македонски · монгол · русский · тоҷикӣ · українська · Ελληνικά · Հայերեն · ქართული · नेपाली · मराठी · हिन्दी · भोजपुरी · অসমীয়া · বাংলা · ਪੰਜਾਬੀ · ગુજરાતી · ଓଡ଼ିଆ · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · සිංහල · བོད་ཡིག · ไทย · မြန်မာဘာသာ · ລາວ · ភាសាខ្មែរ · ⵜⴰⵎⴰⵣⵉⵖⵜ ⵜⴰⵏⴰⵡⴰⵢⵜ‎ · አማርኛ · 한국어 · 日本語 · 中文(简体)‎ · 中文(繁體)‎ · 吴语 · 粵語 · ייִדיש · עברית · اردو · العربية · پښتو · سنڌي · فارسی · ދިވެހިބަސް
Overpass turbo · Wizard · Overpass turbo shortcuts · MapCSS Overpass API · Language reference · Language guide · Query examples · Advanced examples · Sparse Editing · FAQ больше: Overpass turbo (русский) · Overpass API (русский)

Дополненные диффы расширяют обычные минутные диффы. Они позволяют поддерживать ежеминутную актуальность даже для специализированных баз. Идея высказывалась Matt Amos, позже поддержана Frederik Ramm в его докладе на немецком.

Это экспериментальная функциональность. Другими словами, она может быть изменена или прекращена в любой момент, но при этом, мы рады любым предложениям, и готовы улучшать формат и содержимое дополненных диффов на основе конструктивных отзывов.

Вы можете загрузить дополненные диффы со страницы http://overpass-api.de/augmented_diffs/.

Описание

Дополненные диффы содержат три типа данных:

  • новые данные, как в обычных минутных диффах;
  • старые данные, которые были заменены или удалены;
  • контекст: линии и отношения, которые содержали изменённые объекты, а также все точки для затронутых линий.

Это позволяет, в частности, такие применения:

  • правильные ежеминутные обновления для фрагмента базы данных, ограниченного заданной областью;
  • механизм отката: можно взять планету и последовательно отматывать время назад, а не идти вперёд, как обычно.

Первое довольно очевидно, второе требует разъяснения: несколько примеров из вышеприведённых докладов упоминают, к примеру, приложение для подсчёта объектов, которому нужно знать, что именно было удалено, для уменьшения значения счётчика.

Содержимое

Каждый дифф состоит из трёх разделов, по одному для каждого типа объектов. Внутри каждого раздела объекты отсортированы по идентификатору. Если объект встречается несколько раз в разных версиях, эти версии отсортированы по номеру. Каждый объект обёрнут в erase, keep, insert, в зависимости от того, был объект добавлен (только insert), удалён (только erase), изменён (erase со старой версией и insert с новой) или не тронут (только keep).

В заголовке записано время завершения перечисленных изменений.

<?xml version="1.0" encoding="UTF-8"?>
<osmAugmentedDiff version="0.6" generator="Overpass API">
<note>... </note>
<meta osm_base="2012-08-26T20\:24\:02Z"/>

  <!-- Элементы расположены так: сначала точки, затем линии, затем отношения.
       Внутри каждого типа элементы отсортированы по идентификатору. -->

<erase>
  <node ... />
  <!-- содержит либо явно удалённые точки, либо старые версии, заменённые новыми. -->
</erase>
<keep>
  <node ... />
  <!-- содержит точки, принадлежащие изменённым линиям, включая линии, которые не изменились, но содержат изменившиеся точки. -->
</keep>
<insert>
  <node ... />
  <!-- содержит последние версии изменившихся точек. -->
</insert>

<erase>
  <way ... />
  <!-- содержит либо явно удалённые линии, либо старые версии, заменённые новыми. -->
</erase>
<keep>
  <way ... />
  <!-- содержит нетронутые линии, в которых изменились точки. -->
</keep>
<insert>
  <way ... />
  <!-- содержит последние версии изменившихся линий. -->
</insert>

<erase>
  <relation ... />
  <!-- содержит либо явно удалённые отношения, либо старые версии, заменённые новыми. -->
</erase>
<keep>
  <relation ... />
  <!-- содержит отношения, в которых изменилась точка или линия (включая нетронутые линии с изменившимися точками). -->
</keep>
<insert>
  <relation ... />
  <!-- содержит последние версии изменившихся отношений. -->
</insert>

</osmAugmentedDiff>

Нумерация и временной срез

Если коротко, дополненный дифф создаётся раз в минуту, как и ежеминутные диффы. Как и последние, один дифф может включать изменения, произошедшие раньше, чем минуту назад, чтобы дать серверу нагнать планету. Далее, минутные и дополненные диффы не могут быть сопоставлены один к одному. Дополненный дифф может включать больший отрезок времени, нежели минутный, но минутный дифф никогда не разбивается на несколько дополненных диффов.

Дополненные диффы нумеруются примерно так же, как минутные, но имеют собственный счётчик.