Runge, не делай area:highway!

5 сентября 2012, 18:38

Прямо сейчас в чатике все восхищаются тем, как на мапсёрфере, самом красивом функциональном слое OSM, выглядят площади, обозначенные area:highway. Даже безотносительно эстетических качеств не могу не заметить: это ад.

Как люки и деревья, площадные дороги интересны в малых количествах. «О, смотрите, в OSM даже фонарные столбы отмечены — а у вас?» Именно этим микромаппинг импонирует опытным участникам: вместо многокилометровых прогулок с размокшими под дождём обходными листами значительно удобнее открыть спутниковый снимок, и — что вижу, о том пою. В окне видна крышка люка, а на спутнике есть улица, отмечаем. Поребрик, обязательно, и прописать его тип. Откроем справочник и определим виды всех деревьев во дворе. Как можно вытерпеть, что в редакторе дорога — это тонкая линия, а на спутниковой подложке — широченный проспект? А что за углом не отмечен мусорный бак, а магазины в соседнем доме два года как закрылись — мелочи.

Мы превращаем OpenStreetMap в холст, а JOSM — в графический редактор. Вместо интерпретации — закрашивание площадей. Зелёненькое — лес, синенькое — вода, серое — дорога. Какая разница, сколько там полос, каковы покрытие, максимальная скорость, разрешена ли стоянка! OSM — не место для полезных данных. Качество карты рассчитывается по количеству белых пятен на картинке. Нарисованы луг, землепользование, площади — хорошо. Проведена линия и расставлены точки (не важно, сколько на них тегов) — недостаточно.

Отсюда и импорты Корины, медленно накрывающей Европу. Отсюда и фаззер, ныне Scanaerial, закрашивающий сотни квадратных километров одним кликом. Мы носимся с лозунгом «не рисуем под рендер», но при этом в соседней теме требуем от авторов картостилей: «сделайте area:highway!» Будущее OSM — за площадями. Вся планета должна быть покрыта непрерывным слоем natural, затем слоем landuse, затем, лоскутно, слоями place, leisure, area:highway, building и прочими. У вас в потлатче каждая линия в куче мультиполигонов? Ну извините, это редактор такой плохой. Дороги перекопали, лес вырубили, а в жосме невозможно нормально разлепить полигоны? Ничего, через пару лет напишут удобный плагин, тогда и обновите карту.

Тем временем, ни один из существующих слоёв до сих пор не отображает дорожное покрытие. Даже на примитивном уровне «асфальт/не асфальт». Кому это нужно, в самом деле? Всё и так обозначено на картах генштаба, не выпендривайтесь и ездите с ними.

Выхода из этой ситуации два. Первый — запретить детальные космоснимки и прочие источники, кроме GPS-треков. Вернуться к основам, в 2005 год. Потеряем контуры домов, ну и что: для навигации всё равно достаточно адресов и прочих POI. А озёра можно рисовать и по Landsat. Может, в отсутствие возможности накликивать сотни тысяч объектов из воздуха, мы начнём ценить свойства тех немногих дорог и точек, которые увидели своими глазами. Пять осмысленных уникальных тегов на объекте станут минимумом, и станут популярнее валидаторы не количества, а качества.

Другой выход — принять то, что все рисуют под рендереры. И делать картостили не уровня «ура, я поддержал новый тип дорог, хвалите меня», а со сложной логикой, учитывающей на каждом объекте максимальное количество значащих тегов. Чтобы то, как выглядит дорога, зависело не от тега highway (который только всех запутывает), а от lanes, surface, width, smoothness, parking:lane и прочих. Чтобы насыщенность карты зависела не от количества полигонов natural и landuse, а от дорог и POI. Чтобы сторонние люди приходили на openstreetmap.ru и не восклицали «что за ужас», а выкидывали скачанные карты генштаба и нажимали кнопку «распечатать».

Но для этого авторы картостилей должны забыть о микромаппинге. А какой программист (у нас иных авторов нет) способен не отвлекаться на мелочи?

19 комментариев

Runge #
Больше всего мне лично не нравится:
1. Появление страшных углов этих полигонов. Пропадает изящность красивых изгибов дорог.
2. Подписи дорог при заливки площадей выглядят повисшими в воздухе.
Maks Vasilev #
Отныне лес рисуем только точкой, никаких полигонов, реки только линией, даже внутренние моря — это просто линия, надо только прописать количество судоходных lanes в ней. Дома вообще запретить! Ну зачем нам дома.

А вот насчёт того, что бы рендерить покрытие, так мир на сошёлся клином на одном дефолтном мапнике, что бы категорически заявлять, что этого нет ни где.
Илья Зверев
Пример? Я знаю только стиль ITO Map, но это больше валидатор, и даже в этом смысле он плох.
Ilis #
Что за демагогия? Где доказательство что рисующие дороги площадями не отмечают число полос на ней?
Илья Зверев
Суть заметки не в этом, но если хочешь — у меня под рукой только два фрагмента карты с area:highway, и в обоих количество тегов lanes не сравнится с количеством полигонов дорог: первое, второе.
Diomas #
Насчет Корины это вообще, такой адъ. Пытался в финке рисовать лес, так там мультиполигонов понатыкано, у которых в мемберах только один аутер вей с площадью 5 на 5 километров. И все это безобразие перекрывает друг друга. Пока эту ересь отчистишь, уже бинг обводить не хочется.

Как нам все-таки повезло, что в России нет такого мусора
Илья Зверев
Мне, как мапперу соседней с Беларусью области, не повезло :(
Ilis #
Суть заметки не в этом
Суть заметки не в этом, а тон заметки в этом. Не хватает только приснопамятного «У нас пол-России не отрисовано, а вы ...»
Илья Зверев
Нет. Прочитай первый и предпоследний абзацы. Если коротко, у нас в проекте власть рендереров, и делать поддержку дурацких тегов вместо действительно важных — значит, обрекать новичков на проблемы с редактированием и лишать объекты полезных характеристик. Собственно, это происходит уже несколько лет, и я пользуюсь моментом слабости Runge, чтобы обратить на проблему внимание.
Ilis #
Чтобы то, как выглядит дорога, зависело не от тега highway, а от lanes, surface, width, smoothness, parking:lane и прочих.
Этакий алгоритмический микромаппинг. Ещё менее понятный, чем обрисовка всего что видишь.

Вообще, в ОСМ мне нравится что даже какая-нибудь непонятная фигня в результате может выкристаллизоваться во что-то полезное. С другой стороны мне понятно что многие сложившиеся и полезные вещи должны перекочевать в соседние проекты. Например, трёхмерные домики в ОСМ невозможно нарисовать прилично. Релейшены общественного транспорта заполоняют все города, мешая редактировать дороги, их тоже бы вынести в отдельный проект. Если такое разделение произойдёт и будет успешным, то может и роутинг со всеми его полосами, ограничениями и поверхностями можно будет отделить от природы и землепользования.
Илья Зверев
Всё так, но я бы, как раз, вынес из проекта в отдельную базу всю природу и землепользование (и area:highway): теоретически этот слой может (и должен) покрыть ровным слоем всю планету, при этом он слабо связан с остальными объектами базы и мешается при редактировании.
Runge #
Проанализировав полученный результат, принял следующее решение. Рендеринг area:highway сегодня отключу на неопределенное время и верну прежний вид дорогам. Причиной тому послужило неизящное и непонятное отображение подписей дорог на широких площадях, также совсем не красиво смотрятся стрелки направления движения и светофоры. Еще одним ЗА в сторону отключение является не полнота данных, поскольку в базе данных, на текущий момент, не все данные с этим тегом. Об этом я писал на канале. С моей стороны я попробую визулизировать объекты с этим тегом немного по-другому. Вообщем, нужно время на эксперименты.
Sergey Astakhov #
В отсутствии поддержки area:highway новички с завидным постоянством рисуют highway+area=yes только потому что стандартный мапник их рисует. И тем самым ломают роутинг.

Не забываем главный принцип: кому чего нравится — то пусть и рисует, главное чтобы теги были правильными и не путались уровни абстракции.

А что касается отрисовки дорог на базе surface/lanes/width — помнится Котяра пробовал, такая ерунда получалась...
liosha #
> С другой стороны мне понятно что многие сложившиеся и полезные вещи должны перекочевать в соседние проекты. Например, трёхмерные домики в ОСМ невозможно нарисовать прилично. Релейшены общественного транспорта заполоняют все города, мешая редактировать дороги, их тоже бы вынести в отдельный проект. Если такое разделение произойдёт и будет успешным...

Такое, к сожалению, не произойдёт. По той простой причине, что в осм нет нормальных объектов. И соответственно, нет перманентных идентификаторов этих объектов, к которым сторонние базы могли бы привязываться.
Elkim #
>нет перманентных идентификаторов этих объектов

3Д модели домиков спокойно можно привязывать к адресам. А положение апдейтить по координатам точек.

Думаю если захотеть, то найдутся аналогии и по прочим направлениям.
Antares19 #
Даешь расширенную поддержку слоев внутри ОСМ! ;)
Zkir #
>Тем временем, ни один из существующих слоёв до сих пор не отображает дорожное покрытие. Даже на примитивном уровне «асфальт/не асфальт». Кому это нужно, в самом деле? Всё и так обозначено на картах генштаба, не выпендривайтесь и ездите с ними

А должен? И предназначены ли эти «слои» для того чтобы сними ездить? Ездят то не с тайлами, а с навигаторами. В навигаторах покрытие отражается как ему положено.

> все рисуют под рендереры.
А по до что им рисовать? В режиме write-only рисуют единицы. Остальные хотят результаты своего труда _где-то_ увидеть.

>со сложной логикой, учитывающей на каждом объекте максимальное количество значащих тегов. Чтобы то, как выглядит дорога, зависело не от тега highway (который только всех запутывает), а от lanes, surface, width, smoothness, parking:lane и прочих.
Зачем это нужно?
Zkir #
lanes, width, smoothness — совершенно бесполезные теги, и ни рендерить, ни вносить их в осм — НЕ нужно.

А вот слой ледкаверов — очень полезная вещь. Приближение их сплошного слоя нужно всячески приветствовать.
Santacloud #
Наверняка вопрос, который я изложу уже поднимался, но я всё равно соберу в кучу свои мысли по этому поводу.
Начну с того, что некое номинальное «рисование под рендер» — это естественная и неотъемлемая часть работы над картой. Полигон на месте дремучего леса помечается тегом natural=wood для того, чтобы гладя на карту, можно было понять, что в этом месте — лес. Визуальное различие улиц, соответствующее их ролям в улично-дорожной сети города, позволяет любому водителю представить маршрут между двумя точками города.
Представляете, если бы все лини с тегом highway=* рендерились одинаково?
Таким образом, картографирование в OSM подразумевает рисование под рендер по умолчанию. Предостережение «не рисуйте под рендер», красиво сформулированное для удобства запоминания призывает, по-моему, избегать увлечения этим процессов в ущерб пополнения базы данных OSM более существенными данными, как например, приснопамятным покрытием дорог.
При этом, перекос в сторону рисования под рендер бывает «злокачественным» и «доброкачественным». Ярким примером злокачественного является упомянутое, емнип, на Вики тегирование клумбы с розами при помощи landuse=commercial, так как этот тег придёт клумбе узнаваемый красный цвет. Ярким примером доброкачественного является нанесение на карту тропинок и мусорных ящиков вместо описания покрытия и полосности дорог.
Тем не менее, в основе и того и другого лежит одна и та же мотивация — желание увидеть результат своего труда. Ведь именно рисование под рендер — это самый доступный рядовому пользователю способ насладиться сделанным вкладом. Именно относительно быстрым отображением результата, полагаю, и завоевал популярность Mapnik. Это пёстрый, визуально негармоничный слой, но таки берёт и просто отображает сделанное через несколько минут после правки. Именно поэтому желание рисовать под рендер более сильно у новичков, как уже косвенно упомянул Sergey Astakhov. Они ещё пробуют OSM на зуб, они ещё не напомнили свою деятельность внутренними смыслами (к примеру «я единственный в городе маппер и хочу сделать хорошую карту»), их мотивация максимально проста. То, что отображается рисовать интересно; то что не отображается — не интересно. Присутствие подкрепления мотивирует, отсутствие — демотивирует.
Разумеется, всем мапперы разные, и влияние этого фактора разнится для каждого. Мои личные бзики, к примеру, — маршруты общественного транспорта и этажность зданий (которая влияет на их высоту в слое трёхмерных зданий). На öpnvkarte.de, например, не рендерится route=share_taxi, что в своё время затормаживало моё рисование маршрутов этой категории. Я просто хотел видеть результат своего труда, а этой возможности у меня не было.
Поэтому меня совершенно не удивляет устойчивое желание маперов рисовать что попало, а не то, что стоило бы с рациональных позиций. То, что отображается на карте значимей того, что не отображается. Нужно, чтобы те или иные данные вносились в базу активнее? Давайте изменим карту так, чтобы эти данные оказывали влияние на визуализацию.

Лично меня заботит вопрос, как можно помочь нашим авторам картостилей, чтобы ускорить появление желанных обновлений?
AlexTheTux #
>> импорты Корины, медленно накрывающей Европу

а? о чем тут?
anonymous #
> lanes, width, smoothness — совершенно бесполезные теги, и ни рендерить, ни вносить их в осм — НЕ нужно.

Насчёт первого — не соглашусь, osmand по ним подсказывает, на какую полосу перестраиваться.
lenux #
Дело в том, что по-своему опыту могу сказать, что я рисую под рендер. И я буду рисовать под рендер, потому что:
1. Ситуации когда мне потребовался навигатор рисующий в векторе только один и/или пару раз. (Когда не было стабильного интернета в поле)
2. Загрузить мапник гораздо быстрее, чем мой сотовый способен рендерить векторный слой
3. ПОИ навигатор способен отображать и над мапником.
4. Многие дороги по полям ещё не нарисованы, а текущий бинг содержит колоссальное кол-во облаков. Например иногда иногда быстрее и проще сориентироваться по космоснимкам.
5. Так же ситуация надо посмотреть карту и увидеть на ней, с компа. И я не знаю ни одной программы, которая мне бы позволила это сделать в векторе(маперитив не предлагать, я говорю про удобные программы). А мапник позволяет это сделать.
6. Мапник есть куда совершенствовать и без нового стиля. К примеру создал пару тикетов, но конечно они остались без ответов. Так вот: Не отображается amenity=waste_disposal, а также на 8 уровне natural=wetland (потому что он занимает большое кол-во территории, а так получается пустота).
7. Я всё же пришел к выводу, что текущий стиль мапник мне нравится.

Таким образом я согласен с Santacloud о том, что результат должен быть отображаем. Однако я не согласен с той позицией, что прямо таки всё нужно отображать. К примеру то же покрытие.
RusFox #
Я вижу проблему в несовершенности инструкций в вики.
Стандартные правила для мапника писаны «под дурака», вроде бы нормальные мапперы рисуют под этот рендер, инструкции в вики и правила рендера обновляются под еще большего дурака и т. д. Получается замкнутый круг.
Я пробовал поднять проблему на форуме — был непонят.
В результате сижу поднимаю сервер для своих слоев с содержанием «как есть». Результаты представлю, как будет что-то хоть более-менее вменяемое. Если и тогда не буду понят — пойду юзать генштабовские карты.
Виктор #
Я, как разработчик, навигационного ПО хочу сказать, что ситуация похоже будет только ухудшаться, а ведь ОСМ база у нас общая и все использует ее, а не только рендер :(
Во-первых, чем больше объектов, тем труднее рендерить, тем больше ошибок по растеканию, тем больше мелких объектов занимает время, тем больше занимают карты! А ведь никто так и не придумал слоев генерализации! (Они так необходимы, когда надо быстро рендерить без детализации)

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

В-третьих, карта нужна не только, чтобы смотреть, а иногда для интерактивности — расчет маршрутов и поиск. Если POI более не менее улучшаются, потому что они видны на карте, хотя время работы, телефон это далеко, то с адресами ситуация «трудная», а с транспортом «очень трудная». Как правильно кто-то заметил, с такими данными трудно работать и трудно начинать. Почему до сих пор не появилось сервисов, позволяющих сразу править и проверять POI, адреса или Транспорт. Интерактивность карты — это сложный аспект и всем понятно, чем больше мусора на карте, тем больше мусора в интерактивности. Причем мусор на карте можно фильтровать (скрыть), то в интерактивности вы увидите 100 полигонов лесов.

P.S. : недавно нашел очень печальный баг в приложении, а связан он был с мусором на карте : по одним и тем же нодам проходило 2 дороги, они были не видны, но в навигации приложение думало, что на каждом ноде есть съезд...

Много людей ценят карту за актуальность и схематизм, чтобы с первого раза было все понятно. Поэтому большинству не осмосцев не нравится Mapnik, слишком много деталей...