Вопросы новичков (Part 1)

Вешать на само отношение. /thread

В вики как раз таки говорится что теги должны быть на отношении

http://wiki.openstreetmap.org/wiki/RU:Relation:multipolygon

“Теги, описывающие мультиполигон (например, landuse=forest) должны быть на отношении. Внешняя граница может быть оставлена без тегов, либо иметь свои собственные, не связанные с мультиполигоном.”

Josm выдает предупреждение о пересекающихся линиях, когда два мультиполигона типа building имеют общую сторону. Предупреждение пропадает, когда хотя бы у одного мультиполигона на outer way есть building=yes.

Скорее всего, ты что-то не так делаешь с мультиполигонами. Опиши подробнее.

Взять хотя бы тот же дом и дом ниже - 10/5.
Убрать у обоих мультиполигонов с outer way все теги addr:* и building=yes. Скопировать все эти тэги на relation. Как более подробно рассказать не знаю. Описать на какие кнопочки я нажимаю? :slight_smile:

Для воспроизведения ошибки достаточно перенести тэг building=yes с outer way на relation для дома 10/5 и удалить дублирующий тег на outer way дома 3/5.

Так у тебя вэи накладываются, а не “общая сторона.” Нужно разбить каждый вэй на 2 части по общей стене, затем удалить лишнюю стену и добавить оставшуюся в соответствующее отношение.

Э, не понял, что сделать надо.
Можешь на примере этих двух домов показать как должно быть? Спасибо.

Как доберусь до домашнего компа.

Есть один нюанс. У этих домов точно стены общие, или просто стоят вплотную? Если общие, то сделаю, как описывал выше. Иначе вэи нужно разносить - не должно быть у них общих точек.

Да, у них общие стены. И в osm, и в жизни. Почему у них не должно быть общих точек?
Насколько я понимаю, чтобы отделить два полигона, достаточно разделить их общие точки. И отодвинуть друг от друга. Но это будет неправильно, так как в жизни они стоят слитно.

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

Что значит “удалить дублирующуся линию”? Сделать один из полигонов незамкнутым?

Допустим есть 2 линии A и B, на них есть по 2 точки A1, A2 и B1, B2. Я считал, что если объединить точку A1 с B1, а точку A2 с B2, то станет 2 общие точки, общая сторона, и не будет накладок в виде дублирующихся линий и точек.

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

Соединив А1 с B1 и A2 c B2 получаются 2 накладывающиеся линии A1A1 и B1B2, такой вариант не годится

Wiki: http://wiki.openstreetmap.org/wiki/RU:Relation:multipolygon

Вроде понял. Сделал как описали. Potlatch не понимает, что это здания. Посмотрим, что скажет mapnik.

Мапник всё правильно покажет. Потом по аналогии нужно будет со всеми смежными зданиями так сделать. Опять же при условии, что у них реально общие стены, а не 2 разные, стоящие вплотную.

Как отличить здания с общими стенами, от стоящих вплотную? Стоит ли это делать (различать такие стены) для карты местности?

И как надо рисовать здания мультиполигон со стоящими вплотную стенами?

  1. Отличить здания с разными стенами, стоящими вплотную, достаточно легко: по кровле. В любом случае стена одного здания будет выше стены другого здания и её будет видно. Если не получается определить к какому зданию принадлежит торчащая на кровле стена, значит это общая стена на два здания.
  2. Различать стены стоит, т.к. фактические геометрические характеристики.
  3. Мультиполигон для зданий со стоящими вплотную двумя стенами рисовать скорее всего не надо.

Насчет общей стены или стоящих вплотную, ИМХО, слишком загоняетесь.
Здания стоящие вплотную, обычно рисую двумя полгонами с общими точками.

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

На примере города Санкт-Петербург: в центре почти все дома стоят вплотную. Многие из них с дворами-колодцами. То есть мультиполигон нужен.
Как рисовать мультиполигоны типа building со стенами стоящие вплотную друг к другу?

Элементарно. Нарисовать 2 отдельных мультиполигона (без общих сторон) и поставить их близко-близко друг к другу. :slight_smile:

И тогда на рендере будет щель между ними. Это же векторная графика.
На какое расстояние надо приближать дома, чтобы этого не было заметно при максимальном увеличении на карте? Не лучше ли сделать исключение для здания из мультиполигона, что ему можно прописать building=yes на outer way? Все рендеры отлично это понимают такое сочетание.