Uk:OsmChange

From OpenStreetMap Wiki
Jump to navigation Jump to search

Це сторінка з описом формату osmChange. Для отримання інформації про програму з такою ж назвою дивіться osmchange (program).


osmChange — формат файлів, що використовуються інструментами та програмами-редакторами OSM для опису відмінностей між двома дампами даних OSM. Однак він може використовуватись як основа для будь-чого, що має представляти зміни. Наприклад, пакетні надсилання нових даних, змін чи вилучень наявних, набори змін редакторів, їх також можна описати за допомогою цього формату. Цей формат також використовується для розповсюдження змін Planet.osm/diffs.

Інші способи опису відмінностей між наборами даних дивись у розділі Формати файлів змін (planetdiff та формат файлів JOSM).

Файли osmChange зазвичай використовуються для експорту даних з одного редактора OSM до іншого редактора. Зазвичай файл має розширення .osc

Приклад

<osmChange version="0.6" generator="acme osm editor">
    <modify>
        <node id="1234" changeset="42" version="2" lat="12.1234567" lon="-8.7654321">
            <tag k="amenity" v="school"/>
        </node>
    </modify>
</osmChange>

В цьому прикладі представлено набір змін, що змінює одну точку. osmChange – теґ найвищого рівня. В середині нього можливі три варіанти дій з обʼєктами:

  • create – створення
  • modify – зміна
  • delete – вилучення

Вміст цих вузлів такий самий, як і вміст xml-теґу osm, який повертає сервер. Це може бути будь-яка сукупність точок, ліній, звʼязків. Кожен елемент має містити ідентифікатор набору змін і номер версії. У випадку вилучення, потрібна лише точка, але традиційно включаються фактичні дані, щоб людям, які читають файл, було очевидніше, що насправді вилучається. Однак у випадку вилучення, теґи точок не включаються.


Примітка. «Дія» create/modify/delete застосовується на рівні точок, ліній, зв’язків. Немає способу застосувати зміни на рівні теґів. Іншими словами, якщо ви бажаєте додати теґи, вам потрібно включити всі наявні теґи елемента, який ви змінюєте.

Метадані

Примітка: в деяких випадках теґ OsmChange містить атрибути generator та version для визначення джерела походження файлу. Ці параметри не є обовʼязковими та не беруться до уваги під час надсилання даних на сервер.

Інструменти, які створюють файли osmChange, можуть додавати й інші атрибути до теґу <osmChange> на додачу до generator and version. Ці атрибути ігноруватимуться, але вони корисні для таких метаданих, як дата створення файлу.

Коментарі

Більшість інструментів, які підтримують файли osmChange, дозволяють коментарі XML у файлі. Вони виглядають як <­!-- hello -->

Заповнювачі

Однією з поширених проблем під час завантаження нових даних на сервер є те, що ідентифікатори призначаються сервером і тому невідомі під час створення файлу. Одним зі способів розвʼязати цю проблему – використовувати числа, менші за нуль. Вони виконують роль заповнювачів, і коли точка, лінія, звʼязок створюються, в подальшому заповнювач перетворюється на ідентифікатор створеного елемента.

Формат файлів JOSM має подібну будову, в той час, як planetdiff було створено для створення діфів та патчів планети та не підтримує заповнювачі. На момент написання, osmosis не підтримував заповнювачі для заливки даних в БД, однак інші функції можуть обробляти негативні ідентифікатори. Однак існує засіб масового завантаження (bulk_import.pl), який це робить.

Приклад, як це все працює:

<osmChange version="0.6" generator="acme osm editor">
    <create>
        <node id="-1" changeset="43" version="1" lat="-33.9133123" lon="151.1173123" />
        <node id="-2" changeset="43" version="1" lat="-33.9233321" lon="151.1173321" />
        <way id="-3" changeset="43" version="1">
            <nd ref="-1"/>
            <nd ref="-2"/>
        </way>
    </create>
</osmChange>

В цьому наборі змін створюються дві точки із зазначеними координатами, які потім зʼєднуються у лінію. Це ніколи не суперечитиме наявним даним.

Для реалізації цієї програми потрібен кеш-файл для відстеження того, що було завантажено, а що ні.

Примітка. Виклик API для надсилання даних підтримує заповнювачі – насправді всі ідентифікатори в елементах create розглядаються як заповнювачі незалежно від того, негативні вони чи ні. Однак ви повинні дотримуватися від’ємних чисел, щоб ідентифікатори заповнювачів не конфліктували з іншими ідентифікаторами в документі OsmChange. Зауважте, що API замінює лише негативні ідентифікатори заповнювачів. Це певним чином впливає як на заміну ідентифікаторів точок в лініях, так і на ідентифікатори елементів звʼязків. Таким чином, використання негативних ідентифікаторів заповнювачів є, по суті, обов’язковим для їх заміни.

Програмне забезпечення

Ось неповний перелік додаткового програмного забезпечення, що підтримує роботу з файлами OsmChange

Редакторі

Неповний перелік редакторів, які дозволяють обробляти файли OsmChange: