RU:Appllied Multipolygons/Editing

From OpenStreetMap Wiki
Jump to navigation Jump to search

Лес

Продолжим рисовать часть вымышленного (и, поэтому, волшебного) леса. Прежде всего, это лес. Значит, озеро окружено деревьями. Давайте, что ли, их нарисуем:

Appmulti2-01-wood.gif

Сейчас мы нарисовали, будто весь этот прямоугольник в лесе: деревья растут даже на дне. В реальности так не бывает, нужно вырезать дырки под озёра. Выделим контур леса и все линии внешних контуров озёр:

Appmulti2-02-create.gif

Потом, разумеется, тыкаем кнопку «создать отношение» и добавляем выделенные линии. Тут вы офигеете, потому что нужно какую-то из линий обозначить внешним контуром, но как понять, которая из них? Всё элементарно: окно редактирования отношение не модальное, то есть, оставив его открытым, можно редактировать карту. Выделите контур леса...

Appmulti2-03-select.gif

И в окне он подсветится непонятным цветом. Попался — будешь outer. Остальные линии, значит, inner. Не обязательно вписывать это слово рядом с каждой, можно выделить их и проставить роли пачкой:

Appmulti2-04-batch.gif

Члены отношения здесь расположены абы как. Действительно ли они образуют замкнутые контуры? Это важно, поэтому лучше убедиться. Для этого есть полезная кнопка сортировки, с буковками «A-Z».

Appmulti2-05-sort.gif

Вот, теперь по третьей колонке списка членов видно, что линии замкнуты. Обозначили тип отношения, и смотрим, что получилось:

Appmulti2-06-multi.gif

Вы спросите, а что это я не педант и не переношу тег natural=wood на отношение? По правде сказать, в таких простых случаях это не обязательно. Если внешний контур состоит только из одной линии, то не обязательно так заморачиваться. Собственно, это частая практика при использовании мультиполигонов только для добавления островов в озёра и реки: на линии-внешнем контуре висят соответствующие теги, а внутри несколько замкнутых полигонов-островов.


Поляна

На берегу озера, на самом деле, есть место без деревьев. И дно хорошее. Самое то для палаток. Как рисовать хорошее дно я сам не очень представляю, а поляну — без проблем. Сначала дорисовываем контур:

Appmulti2-07-draw.gif

Очень удачно, что линия озера была разбита в правильных местах. Но если не была — JOSM умный, при разделении дополнит отношения мультиполигонов озера и леса.

Выбираем обе линии, которые будут контурами поляны:

Appmulti2-08-select.gif

И создаём мультиполигон:

Appmulti2-09-relation.gif

Если вы не знали, луг — это natural=grassland.

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

Appmulti2-10-wood.gif

Найти его, конечно, непросто — тегов-то нет. Разве что список отношений для выделенных линий (который аккурат под тегами) поможет.

В редакторе отношений выбранные линии сразу отмечены:

Appmulti2-11-selected.gif

Шаг первый: удаляем линию внутреннего контура.

Appmulti2-12-delete.gif

Шаг второй: добавить другую линию как часть внутреннего контура. Правда, у нас выделено сразу три, а редактор отношений не позволяет добавить какую-то отдельную линию из выборки. Не проблема: как уже отметили, окно не модальное, и можно выбрать конкретный отрезок:

Appmulti2-13-selectright.gif

Так можно было поступить с самого начала, но как тогда найти, какой из членов отношения нужно удалить? Не велика проблема: при двойном щелчке на строчку участника соответствующая линия выделяется на карте. Если отношение очень большое, и искать его выбранный член сложно, можно нажать на участнике правую кнопку и выбрать единственный пункт «Приблизить»: он будет не только выбран на карте, но ещё и займёт весь экран.

Appmulti2-14-inner.gif

Короче, нашли новую линию внутреннего контура и присвоили ей правильную роль. Как теперь выглядит мультиполигон леса? Ответ рисуется по нажатию кнопки:

Appmulti2-15-relation.gif

Замечательно смотрится! И, самое главное, нет ужасных накладывающихся линий, которые были бы в изобилии, рисуй мы это всё обычными областями (оставив мультиполигонам только функцию дырок). Хотите посмотреть, как бы такое выглядело? Автор как-то рисовал полигоны покрытия спутниковыми снимками Bing, которые, разумеется, соприкасались. Мысль о мультиполигонах как-то не пришла, и в итоге получилось вот что:

Appmulti2-17-mess.gif

И как теперь здесь выбрать конкретный многоугольник? Вопрос в том, повезёт ли, или последовательно выберутся все соседние полигоны, а нужный — нет. И как тогда определить, выбрана ли линия, если все её отрезки нарисованы красным? Короче, вместо отношения из линий этот сборник контуров снимков должен быть отношением из отношений мультиполигонов. Сложно — но в итоге удобно.


Исключение

Посмотрите на такое отношение для леса, который мы рисовали:

Appmulti2-18-exception.gif

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

Appmulti2-19-simple.gif

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

Научившись составлять мультиполигоны вместе, можно освоить рисование границ.

Но сначала немного теории »