RU:Appllied Multipolygons/Basics
Внешний контур
Возьмите JOSM и нарисуйте линию, у которой последняя точка совпадает с первой. Пусть на ней будет тег natural=water:
Это — полигон, или, как говорят математики, многоугольник. Наличие тега natural=* делает его областью: разница примерно как между окружностью и кругом. Превратить полигон в мультиполигон несложно: нажмите в панели отношений кнопку «создать»:
Откроется окно, в котором три панели: теги на отношении, участники отношения (эти две пустые, потому что отношение только что создано) и список выбранных объектов. Волшебная кнопка добавит все выбранные объекты в отношение:
Теперь нужно заполнить пустые поля. Тег type=multipolygon задаёт тип отношения, очевидно. Больше никаких обязательных тегов для мультиполигона нет. Слева от участников отношения пишутся их роли в этом отношении:
Если вы не прочитали статью про мультиполигоны, то это не очень хорошо. В любом случае, outer означает, что линия (мультиполигоны состоят только из линий) принадлежит внешнему контуру.
Теперь у нас есть правильный мультиполигон. Чем он лучше обычной области? Смотрите, сейчас будет фокус. Выбираем две точки на периметре...
И жмём «P» (или выбираем в меню «Инструменты» пункт «Разделить линию»):
Теперь это две линии, но мультиполигон остался правильным! На рисунке выбрана одна из них, при этом отмечена вся область мультиполигона. Можно ли так сделать с обычном областью? Давайте проверим:
Ну, если не присматриваться, то выглядит нормально. Правда, если выбрать какую-то линию, открывается ужас, свидетельствующий о некорректности данных. На трёх кусках будет ещё очевиднее. Да, области должны быть замкнутыми линиями, иначе это ошибка. Это — одно из основных свойств мультиполигона: он может состоять из любых кусков, главное — чтобы в сумме они составляли замкнутые контуры.
Рекомендуется не оставлять теги на линиях мультиполигона. В части случаев это вообще будет ошибкой. Давайте перенесём наш natural=water на отношение. Если выбрать одну из линий, под списком тегов будет список отношений, в которых она состоит. Не мудрствуя лукаво, тыкаем в «Правку»:
И добавляем тег воды на отношение:
Обратите внимание, что в отношении уже два члена. Умный JOSM при разделении линии, создав вторую её часть, автоматически добавил её в те же отношения, в которых была вся линия. В сложных случаях (когда отношений много) он предупредит об этом:
Добавив тег на отношение, логично убрать его с линий. Теперь у нас абсолютно корректный мультиполигон:
С ним можно делать что угодно: например, просто так, разобьём одну линию напополам ещё раз:
Внутренний контур
Главное назначение мультиполигонов, и именно то, зачем мапперы вообще обращаются к этому страшному типу, — дырки в областях. Их нельзя (без извращений) сделать обычными средствами. Давайте, что ли, и мы сделаем в нашем озере остров.
Сначала рисуем его замкнутой линией. Сразу в дырку он не превращается, нужно добавить линию в отношение мультиполигона.
Поскольку отношение одно, найти его в списке несложно. Тем более, что мы проставили ему тег воды, поэтому он подписан.
Как водится, добавляем его в отношение, и проставляем роль:
Ну если вы до сих пор не осчастливили статью про мультиполигоны вниманием, я даже не знаю. Роль inner, как лентяи могут догадаться, а любопытные уже знают, присваивается линиям внутреннего контура. На самом деле, все эти роли в мультиполигоне не обязательны — программы умеют сами определять вложенность — но их желательно ставить, чтобы другие мапперы не чесали репу при взгляде на ваше отношение мультиполигона.
Дырка, таким образом, готова:
Играться с мультиполигонами можно бесконечно. Контуров может быть сколько угодно (внешний — хотя бы один, разумеется), расположение и разбиение на линии не важно (хотя контуры не должны пересекаться):
В начале урока я упирал на полную передачу тегов с линии на отношение. А вот к чему приводит игнорирование этого правила: допустим, какой-то горе-маппер нашёл две линии из внешних контуров мультиполигона и неразумно превратил их в лес. Но что это?
И ладно, человек удивился, но представьте замешательство программы! Нет, в мультиполигонах лучше хранить все теги в одном месте: на отношении. Это даёт интересную возможность: линия контура может быть объектом сама по себе! Например, здесь одна из границ леса — это забор:
Применение такой возможности на практике мы рассмотрим в следующих уроках.
Инструмент
Знаете, всё это на практике куда проще. Достаточно обрисовать все контуры, как внешние, так и внутренние, и найти в меню «Инструменты» волшебную опцию:
Всё, отношение готово. Линиям присвоены правильные роли, вам остаётся только творческая работа: добавить смысловые теги:
Теперь вы умеете рисовать мультиполигоны, замечательно. Давайте перейдём в реальный мир, где помимо воды есть ещё всякая растительность.