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 Baso Minangkabau bosanski brezhoneg català čeština 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 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 API logo.svg
Overpass API · Language reference · Language guide · Technical terms · Areas · Query examples · Advanced examples · Sparse Editing · Permanent ID · FAQ · больше (русский) · Web site
Servers status · Versions · Development · Technical design · Installation · XAPI compatibility layer · Public transport sketch lines · Приложения · Source code and issues
Overpass turbo · Wizard · Overpass turbo shortcuts · MapCSS stylesheets · Export to GeoJSON · больше (русский) · Development · Source code and issues · Web site

Дополненные диффы расширяют обычные минутные диффы. Они позволяют поддерживать ежеминутную актуальность даже для специализированных баз. Идея высказывалась 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>

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

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

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