Из викимедии с любовью

Вот викимедия. Вот отдел связности внутри викимедии. Вот направление карт внутри отдела связности внутри викимедии. А вот Kartotherian со странным названьем, что в направлении карт создали, что внутри отдела связности, что внутри викимедии. Это движок карт, соединяющий инфраструктуру векторных тайлов Mapbox, сервисы викимедии, и добавляющий несколько полезных инструментов. Он работает уже несколько месяцев на maps.wikimedia.org.

Главный разработчик Kartoterian предложил, заодно, перевести на него и osm.org. Админы, разумеется, повторились, что рано или поздно все там будем, но давайте попридержим коней. А следующим выступил Кристоф Хорманн с общей критикой векторных тайлов: конечно, они быстрые, и позволяют бесплатные вариации стилей (например, для «ретины»), но прежде всего, векторные тайлы ограничивают дизайнера стилей. Он сослался на статью в своём блоге и заметил, что все карты на векторных тайлах нынче выглядят одинаково, без изюминки.

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

  1. Одни и те же данные для разных стилей. Примеры — векторные тайлы Mapbox Streets, или что использует Энди Аллан для своих карт Thunderforest, две из которых есть на osm.org.
  2. Разные форматы файлов для одной карты. Пример — Mapbox Vector Tiles, когда уже подготовленные и готовые к рендерингу данные сохраняются в отдельный файл, и затем на лету превращаются в растр. Не особо отличается от SVG, но и не слишком гибко. (Замечу, что я немного отстал от «паровоза», и настолько жёсткого формата, может, на самом деле нет).

Если разрезать на тайлы все данные, возникает куча проблем. Самая большая — потеря контекста. Нужны окружающие данные и наивысшая точность, т. е. в идеале — одна картинка на весь мир, сделанная из сырых данных. Для эффективности эту задачу упрощают: например, отрисовывают мир метатайлами, и делят данные на слои. Возникают граничные случаи, от чего, например, появились буферные зоны (по полтайла с каждой стороны метатайла). Так вот, в векторных тайлах после обработки остаются отдельные тайлы с буфером, и непонятно, например, куда ставить значки и подписи у больших или длинных объектов. Вместо того, чтобы решать самую сложную проблему картографии, векторные тайлы её усугубляют. Как с этим справиться, пока никто не знает, хотя Mapbox придумал пару обходных финтов, вроде предвычисления расположения подписей.

Карты на векторных тайлах, конечно, непохожи друг на друга: достаточно посмотреть на космические, карандашные, пиратские, деревянные, туристические карты на одних и тех же тайлах Mapbox. Но если этими картами пользоваться, то обнаруживаешь, что там везде одно и то же. Либо ты сводишь картографию на векторных тайлах к выбору цветов, значков и шрифтов, либо создаёшь свои полсотни слоёв, тратишь полгода, чтобы обойти ограничения формата, и в итоге получаешь примерно то же, что на CartoCSS, только с запутанной серверной инфраструктурой на JavaScript. Так что отчасти Кристоф прав: либо технологии, либо качество карты.

Поспорить с Юрием Астраханом, который с группой помощников разрабатывает Kartotherian, можно будет 21-22 ноября в Москве на конференции «Открытые ГИС».

Поделиться
Отправить
3 комментария
Komяpa

Проблема лейблинга разрезанных полигонов решается просто — хранить к кусочкам полигона ещё и точки, в которых были бы мультицентры мультиполигонов.

Илья Зверев

Да, я это и упомянул под «обходными финтами». Но это кажется довольно странным решением, правда, не могу пока обосновать.

freeExec

А с улицами так не прокатит

Runge

То направление, по которому идет MapBox, совсем не ново и было выбрано коммерчискими компаниями еще 15 лет назад. Этот подход заключается в том, что акцент ставится на технологии, позволяющие обслуживать как можно больше пользователей, а не на качество картографического сервиса (в данно контексте имеется в виду качество картографической продукции). И ничего с тех пор не изменилось. В науке также наблюдается застой — ни новых идей, ни новых алгоритмов генерализации данных или расстановки надписей.

Komяpa, мультицентры мультиполигонов для расстановки надписей — это еще один костыль, на которых держится современная «автоматизированная картография». Сама по себе задача расстановки надписей куда сложнее, чем просто подписывание объекта, используя геометрический центр.