OpenStreetMap

Предстоящая большая чистка: некоторые мысли

Posted by Danidin9 on 18 August 2011 in Russian (Русский)

Вчера предпринял первую массовую чистку объектов, оказавшихся под угрозой из-за предстоящей смены лицензии. Заменял в основном дома, выправленные своим же трудом из имевших место ранее кривуль или просто где проставлял адреса.
Оказалось, что и в этом скучном деле есть свои нюансы.
Прежде всего, для этого нужен josm с подключёнными модулями lisencechange и utilsplugin2.
Используя lisencechange определяем, какие объекты были затронуты "несоглашенцами".
Насколько я понял, подсвеченные красным и оранжевым были созданы и изменены соответственно теми, кто отверг новую лицензию, а жёлтым - теми, кто её не принял. Поэтому, если вы уверены в существовании объекта, можете смело выпиливать "красные" и "оранжевые" объекты, да и "жёлтые" в общем-то уже тоже.
Итак, если "покраснела" вся линия, то тут всё ясно: делается её копия, привязывается максимально близко к оригиналу, затем оригинал удаляется. В принципе, привязка может быть идентичной, если копировать объекты через дополнительный слой. Но я так не заморачивался, достаточно было просто сильно увеличить масштаб и точно совместить пару соответствующих узлов.
Также не следует забывать: если оригинал был склеен в нескольких точках с соседними объектами, то и новый объект должен повторять эти связи.
Также возможно, что в лицензионно "чистой" линии мы имеем несколько "красных" точек. Такое может быть, если "чистая" линия была приклеена по точкам к "красной", или "красная" линия была ранее разрезана, и несколько её точек попали в "чистую" часть.
Такие линии также следует очищать, т.к. есть риск впоследствии увидеть малопонятный зигзаг с самопересечениями и т.д.
Алгоритм таков:
1) Создаём копию
2) У оригинала создаём дополнительную точку, чтобы после его было удобно "ухватить" и сдвинуть.
3) Привязываем копию как оригинал по одной из вершин
4) Перетаскиваем оригинал на новое место
5) Обновляем слой lisencechange
6) Находим "красные точки" и удаляем их
7) Ctrl+Shift+G (и снова пригодилась эта функция. Ещё раз спасибо автору utilsplugin'а !)

На этом хотелось бы закончить, но не могу не поделиться грустными выводами. Очищая таким образом Санкт-Петербург я понял, что после удаления объектов "несоглашенцев" карта ещё в течение долгого времени будет малопригодной для навигации. Увы, но чем более сложный класс объектов, чем больше связей в себя включает, тем сильнее он в итоге пострадает.
Так, отдельные точки - POI и отдельные веи будут затронуты крайне поверхностно.
Склеенные линии, например дороги и дома в историческом центре -куда сильнее. Там достаточно одного "красного" объекта, чтобы вызвать "цепную реакцию".
Но хуже всего дело обстоит с отношениями, в том числе типа restriction.
К сожалению, в Санкт-Петербурге именно главные дороги, где больше всего restriction'ов, пострадают при смене лицензии сильнее всего. А как непросто править отношения, по сравнению с другими типами объектов, хорошо известно.

Comment from Sergey Astakhov on 18 August 2011 at 06:51

Чтобы сохранить отношения - удобнее делать не копию, а разрезать исходную линию возле начальной точки. Тогда отношения на новой линии сохранятся.

Hide this comment

Comment from Sergey Astakhov on 18 August 2011 at 06:55

Единственная особенность - ограничения поворотов со стороны начала линии, т.к. JOSM сохраняет ограничения только с нужной стороны. Чтобы сохранить и их, можно временно развернуть линию, а после разрезания развернуть обратно.

Hide this comment

Comment from Hind 😼 on 18 August 2011 at 11:09

Хинт: при разбиении незамкнутого вея в JOSM старый id получает та часть, что стоит в начале бывшего вея (откуда идёт стрелка направления).
То есть старый вей изменяется так, будто удалили n последних нодов.

Hide this comment

Comment from Zkir on 31 August 2011 at 07:04

На самом деле, идея, что можно произвести лицензионную чистку *копированием* изначально несколько абсурдна. Поэтому это все скорее грустно.

Hide this comment

Comment from Danidin9 on 31 August 2011 at 16:55

Zkir: да, это скорей так. Но я всего лишь хотел обезопасить те объекты, основную работу над которыми выполнил сам и которую не хотелось бы потом делать заново. Если бы такого объекта изначально не было, я бы его создал со всеми теми же точками и тегами, что есть сейчас. Только такие объекты я предлагаю чистить, ничего больше.

Hide this comment

Leave a comment

Parsed with Markdown

  • Headings

    # Heading
    ## Subheading

  • Unordered list

    * First item
    * Second item

  • Ordered list

    1. First item
    2. Second item

  • Link

    [Text](URL)
  • Image

    ![Alt text](URL)

Login to leave a comment