Вода, земля, территориальное деление... Что первично?

Некоторые полигоны кладутся прямо на водные объекты. Из-за чего при создании правил для сборки возникают проблемы.
Приведу примеры:
place=town поверх waterway=riverbank
leisure=park поверх natural=water
landuse=residential поверх natural=water

В результате возникает бардак при определении порядка отрисовки.

Мне кажется это некорректно, особенно в случае landuse (землепользование). Нужно ли это исправлять?

Всё в порядке. Может быть пруд в жилом квартале, может быть речка/озеро/пруд в парке, может быть речка в городе.

ИМХО по убыванию:

  1. вода
  2. лес / трава
  3. landuse=residental
  4. place

Вот, например, пруд: http://www.openstreetmap.org/browse/way/28181698
лежит поверх травы: http://www.openstreetmap.org/browse/way/87020094
который внутри landuse=residential: http://www.openstreetmap.org/browse/way/176642032

UPD: Трава вырезана по границе пруда

то есть мы сначала выводим natural=water (озеро), потом place=island (остров), на нем leisure=park (парк), и что делать с natural=water в этом парке? как-то нелогично, не находите?

Тут пруд надо вырезать из газона.

во-во, вот и я про это. а таких мест навалом.

не порите чушь. что из чего “вырезать” должен решать рендерер (и все они это успешно решают), а не пользователь с помощью костылей

хотя есть и исключения. пример: http://www.openstreetmap.org/?lat=57.03117&lon=61.95657&zoom=15&layers=M
это озеро, вокруг которого болото (мультиполигон)
если мультиполигон убрать - будет заболоченное озеро (что тоже встречается в природе)

Это не исключение. В первую очередь и надо применять точные определения и соответствия реальным объектам и здравый смысл. А полениться можно в качестве исключения только в самых очевидных и абсолютно однозначных случаях таких наложений.

Вырезать или нет - зависит от типа объекта. Есть простой тест: тыкнуть в интересующее место и спросить - принадлежит ли эта точка соответствующим объектам. Примеры:

  1. Пруд посреди газона: очевидно что точка внутри пруда не принадлежит газону - значит надо вырезать.
  2. Пруд посреди парка: скорей всего точка внутри пруда принадлежит парку (могут быть исключения для больших прудов/озёр) - вырезать не нужно.
  3. Пруд посреди парка внутри города: точка внутри пруда принадлежит городу - вырезать не нужно.

ну и так далее по аналогии. А то есть любители, начинают даже дома из landuse=residential вырезать, что есть очевидная ересь.
Наше дело - корректно обозначить объекты, а как это потом будут отображать рендереры - это уже их забота.

+100500

Вот бы это в вики написать.

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

О! Какое короткое, точное и ёмкое определение!

http://wiki.openstreetmap.org/wiki/Layer и никаких неопределённостей.

то есть вы думаете, что человек, который не задумываясь лепить landuse (повторюсь, ЗЕМЛЕпользование) на водные объекты, удосужит себя указанием layer?

А в чём проблема? Всего лишь надо озаботиться корректным выбором приоритетов, что поверх чего рисовать. Более того - в зависимости от предназначения карты эти приоритеты вполне могут быть разными. layer нужен только для указания приоритета среди одинаковых объектов (типа какая дорога идёт поверх другой дороги).

А насчёт вашего примера, так это общая проблема 2D рендереров, на которых пытаются нарисовать абстракции 3D мира. Нормально она решается только учётом 3-го измерения.

layers предназначен для “describe the relative vertical position of…” “…and sometimes other features”. Помимо дорог и рек это могут быть, например, парковка под торговым центром или на крыше здания стоящего на склоне, и другие объекты чьё наложение можно трактовать по-разному.

Случай с домами на скале над морем тоже непростой. Если не нарисовать natural=cliff ,то даже человеку будет непонятно, может это плавающие дома как в Голандии.

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

Я ещё не видел рендера который отображал бы мою точку зрения:
Снизу-вверх:
natural
landuse (полу-прозрачно на natural’e)
leisure
и т.д. (water, hw, build)

Давайте обратимся к первоисточникам и разберем по порядку.

Обратите внимание на участков земли, не територии, а именно участки земли. Водный объект - это не участок земли. И по моему мнению он должен быть исключен из landuse.

place и leisure оставим, там определение разрешает включать в себя все.

далее вот такой пример: озерцо, вокруг него кустарник. Человек выделяет весь квадрат (вместе с озерцом) и ставит на него natural=scrub. Либо та же история с домом (building=residential), вокруг которого газон (landuse=grass). Это нормально?

ИМХО, в данном случае “земля” употребляется в общем смысле, т.е. включая болота, озёра, реки и т.п.
Пруд не нужно исключать из landuse=residental, если он целиком внутри микрорайона.