Рендеринг в малонаселенных районах

Очень характерная для России ситуация - хутор из нескольких домиков, очень плохая дорога, да еще тропы и просеки и все - на десятки (а где-нибудь на Алтае может быть и на сотни) километров вокруг больше ничего нет.

Если ставить теги как описано в Вики (place=hamlet, highway=track/path ) то на больших масштабах карта превращается в белое пятно. (ну или - в белое-зеленое - если лес прорисован :slight_smile: )
Хуторов или турбаз совсем не видно, а пешеходную тропу целиком не рассмотреть.

Все способы искусственного поднятия уровня обьекта ( когда козьей тропе ставят highway=unclassified, а охотничьей избушке place=town :slight_smile: ) - по сути неправильны.

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

Что-то вроде render:escalation_level

что думаете - насколько это хорошее решение?

имхо, рендерер должен бы сам повышать уровни объектов в разреженных областях

Хорошо бы так!

Но судя по тому, что ни один из известных мне рендереров этого не делает (и Garmin в том числе) - видимо это не так легко реализовать.

В режиме карты вверху справа “моёимя|домой|входящие(0)|выход”, а в потлатче “моёимя|home|входящие(0)|выход”. Недоперевод?

Ilis, оффтоп это называется:) самый махровый.
С одной стороны, сам рендерер не верю, что когда-то будет так глобально смотреть на карту и поднимать приоритет прорисовки мелких объектов. С другой стороны, любые теги элитарности будут соблазнять отдельных представителей общественности возможностью утяжелить общие масштабы своими местечковыми подробностями. Или это должен делать совет доверенных модераторов. Скажем, одобрять или отклонять такие теги, проставленные осмерами.
Хотя, вот как по мне, масштабы от 5 до 8-9 представлены крайне скудно. Сравнить можно, да хоть с той же гугль-картой. Там масштабы 6-8 весьма юзабельны, у нас же полный бланк. Только по Москве да транкам и прикидываешь, где нужный город, для дальнейшего укрупнения.

Он просто ошибся темой. Т.к. это замечание к Перевод сайта OpenStreetMap.org… т.е. да, самый, что ни на есть, классический оффтоп :wink:

Во первых есть кое-что, что мог бы и рендерер (или конвертор) продумать - например смотреть на масштабы полигонов и по ним выбирать максимальный уровень. А то уровень на котором виден водоем один и для пруда в десятки м^2 и для озера в сотни км^2. Кстати, можно и “разреженность” предусмотреть (хоть это и потребует серьезных вычислительных затрат на поиск) - так для населенных пунктов можно задавать (для типа в конверторе) в какой радиусе не должно быть таких-же или более значимых н/п, чтобы на данном масштабе его отобразить. Ну и задавать и учитывать admin_level: может хутор из трех дворов - райцентр, тогда его можно на уровень/другой приподнять.
Во вторых хинтинги предпочтительного масштаба могут быть как в явном виде (например число метров на точку или дюйм), что действительно чревато (хоть и очень соблазнительно), так и менее явные. К примеру хочется иметь возможность для остановок (а особенно выходов из метро) задавать некое множество точек по которому считать (можно и с весами) среднюю точку, которую и показывать на некотором уровне, когда не отображается вся стая. Еще можно придумать для объектов признак значимости (к примеру двор/квартал/микрорайон/городской район/…/международный)… тогда можно отображать межобластные зимники на севере (не знаю гипербола это или реальность) на уровне, на котором Московские secondary давно скрыты.

Кстати, если я на ошибаюсь, то начиная с какого-то уровня в мапнике используются шейпы с грубой картой (очень хорошо видно, как при очередном уменьшении масштаба? появляют полигоны населенных пунктов? не имеющие ничего общего с более подробными.

Да, ещё меня раздражает, что waterway=riverbank ну рендерится на мелких масштабах и получается вообще бред: цепь мелких озёр в пойме реки видна, а сама река – нет. Поэтому для крупных рек(Волга, Ока) я всегда использую комбинацию natural=water waterway=riverbank. Да и думаю уровень waterway=river можно было бы и повыше сделать… что же наши разработчики так реки-то не любят? Даже ирригационные каналы шире рек рендерятся…

опять же вопрос: по каким правилам распределять?

Можно конечно и правила для рендерера придумать - скажем взять за основу площадь обьекта в процентах от квадрата отрисовки. Скажем если > 5% - рисуем.
Но только все это приведет к дополнительным затратам - на каждом уровне для каждого обьекта посчитать площадь , учесть тип объекта и принять решение рисовать - или нет.

Или придется где-то хранить таблицу со списком отрисовываемых объектов для каждого квадрата на каждом уровне, и как-то ее обновлять.

Но с точечными объектами не имеющими площади так не поступишь, тут придется считать расстояния между ними при отрисовке и как-то решать, что добавить а что - нет.

PS Кстати - с водой osmarender похоже работает грамотнее чем mapnik.

Просто прописать в конфиги конвертора, мол от такой до такой площади озера – рисовать до такого-уровня.
А далее дело настройки, как правильно задать … да вообще будет как в армии: хоть безобразно, зато однообразно :wink:

Так какая разница, 0.1 или 0.5 сек/тайл потратит мапник.

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

С чем-то можно так, а для чего-то принять, что раз не полигон - то значит меньше какого-то значения.
Для линейных объектов и так есть возможность задать ширину.
Можно бы задавать ее и для протяженных площадей (например для рек).
Да и для точечных объектов можно придумать тег площади.

Я уже представил это в работе, когда на больших масштабах в левой части РФ будет Москва, Питер, Новосибирск и магистрали M-XY, а справа х. Нижний, х. Правый и пунктирные “транки” :slight_smile:

osmisto, На картах СССР были такие посёлки как Диксон, Дудинка, Анадырь и Уэлен, потому что на Таймыре и Чукотке они - одни на сотни км. Всё правильно.

Я когда-то делал карту аэронавигации на SVG, там просто в густо заселённых районах уменьшал пороговые масштабы на какие-то коэффициенты. А чтобы системно это делать - надо фильтровать все объекты по их размерам при помощи алгоритма Рамера-Дугласа (что сжалось в точку - отбрасывать), а человеческое, то есть не природное - показывать сколько влезает в карту в масштабе. То есть на тайл не более N объектов.

Собственно, по такому принципу моя карта и работала, только без Рамер-Дугласовского алгоритма: у слоёв были приоритеты, и пока не достигнут предел кол-ва точек на единицу площади, они добавлялись в карту.

Опечатку в названии темы поправьте, плиз - “рендеринг”.

Грамар-наци атакуют!

Граммар с двумя м :-))

Они и сейчас так отображаются. По крайней мере я вижу их на современной карте масштаба 1:5 500 000.

Когда на карте нет объектов, можно поднять снизу менее важные и интересные вещи, лишь бы белые пятна закрыть.
http://www.openstreetmap.org/?lat=59.03&lon=30.23&zoom=8&layers=M
От конвертера, конечно, требуется интеллектуальность в этом вопросе. Мапник худо-бедно пока справляется, хотя научить его(и не только его) поднимать одинокие северные поселки было бы тоже неплохо.

вообще дорога до посёлка - unclassified независимо от качества покрытия… и будет отображаться на более менее больших масштабах
http://www.openstreetmap.org/?lat=55.257&lon=37.384&zoom=10&layers=M

а вообще это mapnik должен смотреть много ли на полигоне объектов или мало и рендерить всё или часть… вопрос насколько это сложно реализовать