RU:Appllied Multipolygons/Editing

From OpenStreetMap Wiki
Jump to: navigation, 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, касающегося границы, делать нельзя.

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

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