RU:Appllied Multipolygons/Editing
Лес
Продолжим рисовать часть вымышленного (и, поэтому, волшебного) леса. Прежде всего, это лес. Значит, озеро окружено деревьями. Давайте, что ли, их нарисуем:
Сейчас мы нарисовали, будто весь этот прямоугольник в лесе: деревья растут даже на дне. В реальности так не бывает, нужно вырезать дырки под озёра. Выделим контур леса и все линии внешних контуров озёр:
Потом, разумеется, тыкаем кнопку «создать отношение» и добавляем выделенные линии. Тут вы офигеете, потому что нужно какую-то из линий обозначить внешним контуром, но как понять, которая из них? Всё элементарно: окно редактирования отношение не модальное, то есть, оставив его открытым, можно редактировать карту. Выделите контур леса...
И в окне он подсветится непонятным цветом. Попался — будешь outer. Остальные линии, значит, inner. Не обязательно вписывать это слово рядом с каждой, можно выделить их и проставить роли пачкой:
Члены отношения здесь расположены абы как. Действительно ли они образуют замкнутые контуры? Это важно, поэтому лучше убедиться. Для этого есть полезная кнопка сортировки, с буковками «A-Z».
Вот, теперь по третьей колонке списка членов видно, что линии замкнуты. Обозначили тип отношения, и смотрим, что получилось:
Вы спросите, а что это я не педант и не переношу тег natural=wood на отношение? По правде сказать, в таких простых случаях это не обязательно. Если внешний контур состоит только из одной линии, то не обязательно так заморачиваться. Собственно, это частая практика при использовании мультиполигонов только для добавления островов в озёра и реки: на линии-внешнем контуре висят соответствующие теги, а внутри несколько замкнутых полигонов-островов.
Поляна
На берегу озера, на самом деле, есть место без деревьев. И дно хорошее. Самое то для палаток. Как рисовать хорошее дно я сам не очень представляю, а поляну — без проблем. Сначала дорисовываем контур:
Очень удачно, что линия озера была разбита в правильных местах. Но если не была — JOSM умный, при разделении дополнит отношения мультиполигонов озера и леса.
Выбираем обе линии, которые будут контурами поляны:
И создаём мультиполигон:
Если вы не знали, луг — это natural=grassland.
Теперь у нас есть проблема. Деревья, судя по карте, с поляны не ушли. Надо бы исключить её из того мультиполигона. Другими словами, внутренний контур теперь должен проходить не по нижней линии поляны, а по верхней. Давайте выделим обе, и заодно внешнюю границу леса, и отредактируем отношение последнего:
Найти его, конечно, непросто — тегов-то нет. Разве что список отношений для выделенных линий (который аккурат под тегами) поможет.
В редакторе отношений выбранные линии сразу отмечены:
Шаг первый: удаляем линию внутреннего контура.
Шаг второй: добавить другую линию как часть внутреннего контура. Правда, у нас выделено сразу три, а редактор отношений не позволяет добавить какую-то отдельную линию из выборки. Не проблема: как уже отметили, окно не модальное, и можно выбрать конкретный отрезок:
Так можно было поступить с самого начала, но как тогда найти, какой из членов отношения нужно удалить? Не велика проблема: при двойном щелчке на строчку участника соответствующая линия выделяется на карте. Если отношение очень большое, и искать его выбранный член сложно, можно нажать на участнике правую кнопку и выбрать единственный пункт «Приблизить»: он будет не только выбран на карте, но ещё и займёт весь экран.
Короче, нашли новую линию внутреннего контура и присвоили ей правильную роль. Как теперь выглядит мультиполигон леса? Ответ рисуется по нажатию кнопки:
Замечательно смотрится! И, самое главное, нет ужасных накладывающихся линий, которые были бы в изобилии, рисуй мы это всё обычными областями (оставив мультиполигонам только функцию дырок). Хотите посмотреть, как бы такое выглядело? Автор как-то рисовал полигоны покрытия спутниковыми снимками Bing, которые, разумеется, соприкасались. Мысль о мультиполигонах как-то не пришла, и в итоге получилось вот что:
И как теперь здесь выбрать конкретный многоугольник? Вопрос в том, повезёт ли, или последовательно выберутся все соседние полигоны, а нужный — нет. И как тогда определить, выбрана ли линия, если все её отрезки нарисованы красным? Короче, вместо отношения из линий этот сборник контуров снимков должен быть отношением из отношений мультиполигонов. Сложно — но в итоге удобно.
Исключение
Посмотрите на такое отношение для леса, который мы рисовали:
Странно, но допустимо: одна линия входит в отношение дважды, и озеро с поляной сделаны как два соприкасающихся внутренних контура. Обратите, кстати, внимание, что направление линий для мультиполигонов не имеет значения. В нашем случае строить так отношение глупо и лучше не надо, а исключение придумано для более простых случаев:
Здесь чтобы не делать лишних отношений мультиполигона и не разбивать лишний раз линии, просто как inner добавлены оба полигона. Это единственное упомянутое исключение, и других фокусов, вроде inner, касающегося границы, делать нельзя.
Научившись составлять мультиполигоны вместе, можно освоить рисование границ.