Острова

Понятное дело, но хочется для начала как минимум разобраться что не так работает в рендерах.

Например,
http://osm.org/go/2Fk7zJk - landuse=reservoir+waterwayriverbank, mapnik острова не рисует, что land, что мультиполигон. osmarender рисует.
http://osm.org/go/1i7gOT_ - coastline в океане. Рендерятся на любом зуме, что с place=island, что без
http://osm.org/go/_I4Yvvz- - все Курильские острова - просто coastline, и рендерятся на любых зумах. Остров Броутона был natural=land, и рендерился только на высоких зумах (osmarender’ом на совсем высоких), переделал его в coastline и похоже что мапником он теперь вообще не рендерится.

Попытки повесить название на остов у меня ни к чему не привели, но один я видел http://osm.org/go/0t20ZFDC0– правда он islet.
Я ничего не понимаю.

э … вроде, у мапника “повышенные требования” к направлению линии, которой отрисован полигон воды. Что-то там типа “берег - слева, земля - справа”. И неадекват рендеринга начинается, когда полигон вылазит за границы одного тайла. Не?

Да, только по-моему, наоборот (вода-справа). Это требование соблюдается. А что значит “за границы тайла”?

Кстати еще к непоняткам - было несколько полигонов, включенных как inner в мультиполигон riverbank, при этом на них самих тоже был riverbank, и при этом они вполне нормально рисовались островами.

  1. Coastline мапником рендерится не из базы, а из шейп-файла, выгружаемого раз в несколько недель. Рисовать объект костлайном - обречь его на невозможность быстро пофиксить во многих “неофициальных” вариантах мапника (админов всегда придётся пинать отдельно обновлять немелкие шейпы континентов, и перерендеривать всё руками через /dirty). Любая ошибка в костлайнах (направление / замкнутость) создают огромные артефакты, потому часто новый шейп уходит не в рендеринг, а в свалку, и новых костлайнов можно не увидеть не месяц, а два и больше.
  2. Никаких ограничений на размер riverbank/water нету. Если размер полигона будет больше 2000 нодов, его можно просто собрать в много-outer’овый мультиполигон.
    Следует иметь в виду, что зумы выше 11-го никогда не перерендериваются основным мапником автоматически, и им в таком случае надо дёрнуть /dirty.
    Кроме того, следует помнить, что при огромном размере полигона osm2pgsql помечает измененными только тайлы его периметра, в результате чего могут наблюдаться артефакты типа “полигон внутри не заполнен”. Опять-таки, это достаточно просто исправляется вызовом /dirty для проблемных тайлов.

Котяра, большое спасибо за ценные сведения.

Что ж, проведу эксперимент. Из одного нормального водоёма сделаю много-outer’овый мультиполигон и посмотрю что получится.
В качестве подопытного кролика использую оз. Колвица. на юге Мурманской области. Всё равно береговую линию пора уточнять, а 2000 нодов там дело не обойдётся.

Кстати, острова на много-outer’овый мультиполигоне с coastline без тега natural=land не рендерятся вообще. Только сейчас заметил.

На coastline мультиполигон не нужен. И оно рендерится без land, это все Курильские острова.

Я о внутреннем водоёме с coastline.

Кстати, что за зверь /dirty ? пока ничего вразумительного об этом не нашел. В смысле, как им пользоваться.

Первые результаты. Мапник - без видимых изменений, у осмарендеря снесло крышу . :frowning:
http://www.openstreetmap.org/?lat=67.077&lon=33.497&zoom=11&layers=O

А, я невнимательно прочитал. Так это ж очевидно - coastline имеет смысл исключительно как линия, мультиполигон на нем смысла не имеет, а острова внутри работают по таким же правилам как острова в океане, т.е. либо land и рендерится не на всех зумах, либо coastline с правильным направлением. Но если на мультиполигон, состоящий из coastline’ов, наложен natural=water, то логично что остров должен быть кроме coastline еще и inner’ом в этом мультиполигоне, иначе закроется той водой которая natural=water.

К URL’у png картинки тайла в мапнике можно приписать /dirty, тогда он принудительно перерендерится.

А УРЛ картинки легко посмотреть, например, Firebug-ом (это если Firefox).

Если это Firefox, можно просто кликнуть правой кнопкой по тайлу и нажать “Открыть изображение”. Сразу и урл будет в адресной строке.

Как-то давно пробовал – не понравилось что изображение открывается вместо карты. Жал "Скопировать ссылку на изображение, контрол-Т, Шифт-Инсерт…

Сейчас попробовал жать “Открыть изображение” с контролом, открывает в новой вкладке, самое то, что надо! С шифтом открывает в новом окне.

Зажми ctrl.

UPD. Лол. :3

Спасибо за пояснения! У меня именно Firefox. Работает.
Как дать пинка осмарендеру тоже нашел, на http://tah.openstreetmap.org/Browse/ ,
но только на 12-м зуме. 11 и ниже перерисовываться упорно не хотят.

Расковырял несколько мест где не рендерились острова.
В одном случае проблема была в самопересекающемся outer (т.е. воде) полигоне, в другом - на мультиполигоне было reservoir + riverbank, а на outer полигоне было еще и water. В результате, видимо, дырки в water не считались. Проверяйте такие случаи, если где-то у вас не рисуется.

Переделал несколько крупных озёр из coastline в water. С островами всё в порядке даже в осмарендере. Зато вылезли грандиозные проблемы с берегами. Плюнул бы на этот osmarender, но уж больно он хорош именно для водной сети и зелёнки. Не знаю, что и делать. Не желает он корректно обрабатывать мультиполигоны water из более, чем двух веев.
Из двух - обрабатывает нормально. Хоть руби на несколько полигонов. :frowning:

С правилом “не мапить под рендер” почти согласен, но с другой стороны, какой смысл делать карту, которую невозможно нормально просмотреть?

Это не только с water-ом. Он вообще не понимает более одного outer в мультиполигоне. Вот, к примеру, пляжи, учитывается только первый way: http://osm.org/go/x4Fa0B5Uh-?layers=O

Пинать авторов osmarender-а чтобы они допилили поддержку до полноценных мультиполигонов.

FYI, доделал - собрал все острова в мультиполигоны, где можно было. Остались где-то с полсотни land вне coastline - с ними не совсем понятно что делать - для внутриконтинентальных скорее всего coastline водоёма менять на water, для внешних то-ли менять на coastline, то-ли оставить как есть.

Еще я заметил помойку с relation’ами рек - что с ней будем делать? Такая же каша как с улицами - разные relation’ы с разными member’ами, где-то type=river где-то collection, где-то еще что-то; где-то включены мультиполигоны, где-то только внешние контуры, где-то внешние и острова; где-то с пустыми ролями, где-то с inner/outer как у мультиполигона.
Есть на эту тему принятые proposal’ы, или хотя-бы что-то нормально оформленное?

В смысле “помойку”?
Я делаю именованый river, а в местах где река достаточно широка - riverbank поверх него. Если есть острова - объединяю в неименованый мультиполигон water. Встречал, где несколько riverbank объединены в мультиполигон, но смысл сего действа мне непонятен. Такие мультиполигоны удаляю, как и тег name - нужды в нём нет, да и рендерится это название где попало.