55 заметок с тегом

картостили

Адаптивные карты

Во время конференции YaC я восхитился примером адаптивных карт от яндекса, и читатели телеграма спросили, что это такое. Если коротко, это карты, которые адаптируются к контексту. Загвоздка в том, что под этим понимают и как нас ограничивают технологии. В публичной картографии две догмы:

  • равноугольная проекция и отсутствие искажений: проекция меркатора мгновенно считывается как ошибка, а фрагмент всегда может быть встроен в полную карту;
  • неизменность слоёв: если на карте видно кафе, то на ней будут все кафе, если видна улица — будут все улицы.

Другими словами, несмотря на общепризнанную смерть громоздких интерфейсов ГИС для массовых приложений, работа с картой в любых публичных сайтах и приложениях до сих пор сводится к масштабированию и переключению слоёв, лишь с более удобным управлением.

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

Печатные карты часто искажают, адаптируя для человека. Очевидный пример — атлас трассы М10, где она вытянута в идеально прямую линию, или нарисованные от руки схемы проезда. Что люди создают инстинктивно, алгоритмы едва могут воспроизвести: в 2010 году исследователи из Microsoft, Adobe и колледжа Беркли опубликовали статью про автоматическую генерацию схем проезда (открывающая иллюстрация — из неё). Важность этой публикации затмевает только безразличие, с которым к нему отнеслись все картографы. Печать карты маршрута сейчас — всё ещё печать фрагмента привычной карты с подсвеченными линиями.

Во время движения по маршруту водитель отвлекается на экран смартфона на долю секунды. За это время ему нужно выдать максимум релевантной информации. Поэтому карты для навигатора делать сложнее, чем обычные тайловые слои. Например, в этой заметке сотрудник Mapbox рассказывает, как правильно подписывать улицы, чтобы водитель видел только те названия, что могут ему пригодиться. Чтобы сделать карту в навигаторе лучше, нужно учитывать контекст.

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

На фрагментах слайдов выше отображены только те заведения, которые находятся на поворотах линии маршрута и могут помочь водителю сориентироваться. А на развязке справа подсвечены все выезды из него, а не только стрелка по нужному выезду. Так водитель лучше поймёт, куда не надо сворачивать. Всё это изменяет привычную карту и использует контекст, адаптируется к задачам пользователя. На слайдах мы увидели лучшую адаптивную карту и, кажется, первую в публичном приложении, доступном миллионам пользователей.

Такую карту не покажешь в виде тайлов на веб-сайте. Её с трудом можно сотворить в QGIS. Но теперь у нас есть векторные тайлы, которые содержат атрибутированную геометрию. Фильтровать их с учётом контекста, подсвечивать и искажать можно прямо на мобильном устройстве, учитывая показания разных датчиков. Будет увлекательно посмотреть, как сильно изменятся навигационные карты в погоне за максимальной информативностью для пользователя. Хорошо, что Яндекс сделал заметные шаги в направлении адаптивных карт, но хочется, чтобы потребители OpenStreetMap перехватили инициативу.

2018   mobile   картостили   не про нас

Стиль бледный

Дизайнеры Mapbox обновили стиль для навигации. Вместо привычных мягко-оранжевых линий водитель будет смотреть на бледное серо-жёлтое месиво. Первой реакцией на заметку было: «нам нужно было разделить дороги по классам и адаптировать к быстрым взглядам на мелкий экран, поэтому мы три контрастных цвета превратили в два размытых и увеличили шилды, оттянув внимание». Действительно, сравнивая «было» и «стало» недоумеваешь, зачем портить хороший картостиль.

Но не всё так просто, разумеется. Бледный стиль получается, когда дизайнеры перестают выбирать цвета и отображаемые элементы по наитию и подходят к стилю системно, определив задачи. Меньше цветов — легче выделить важные элементы, вроде парковок или заведений. Среди дорог достаточно различать главные и неглавные, а маршрут всё равно покажет линия. Тёмная заливка явно мешала замечать подписи.

Те же претензии, что появились у меня к новому стилю Mapbox, высказывали относительно стиля MAPS.ME, великолепно переделанного командой «Урбики». И действительно, в сравнении с феерверком цветов новые дороги выглядели бледновато. Но выкатить стиль — это половина работы, и «Урбика» потом ещё полгода дорабатывала цвета и линии по комментариям: чуть больше контрастности, чуть иные размеры.

У нового стиля навигации Mapbox много заметных проблем. Например, по исследованиям, текст легче читается не на белом, а на чуть менее контрастном фоне. А ночной стиль стал слишком ярким: на картинке в блоге выглядит красиво, но в машине ночью я бы предпочёл едва различимые дороги, как слева. Но раз навигационный стиль стал из обрубка презентационного стал самостоятельным, дизайнеры, я уверен, сгладят все проблемы по отзывам пользователей своего API.

Обледнение стиля свойственно всем веб-картам, от Google и Here до «Космоснимков» и OpenStreetMap. Кричащие цвета не помогают в использовании карты совместно с другими геоданными: маркерами, линиями, тепловыми картами. Переход от ярких дорог и выделяющихся точек заведений к белым линиям и унифицированным иконкам сродни смене высказывания «Смотрите! У нас дороги! И POI!» на «вот вам однородная карта, готовая к любым применениям». Другими словами, чем менее кричаще, более бледно выглядит карта, тем она взрослее и серьёзнее.

На этой иллюстрации вы видите самый взрослый стиль на основе OpenStreetMap в мире (если не считать MapSurfer Gray). Он красивый и не помешает ничему, что вы наложите поверх. Разумеется, это странный способ оценивать стили: цветовая гамма и количество элементов не являются мерилом качества.

Дизайн картостиля — это непрерывная работа по отделению важного от второстепенного. Медитирование над палитрой. Чтобы красиво, но неброско. Информативно, но не перегруженно. Привычно, но не копия. И поверх всего — задача для стиля, без которой не стоит даже начинать (но все начинают). Рано или поздно задача меняется или просто утверждается, и карта меняет вид. Это нормально и всегда к лучшему. Без задачи невозможно осмысленное улучшение, а с задачей... Ну да, получается бледно.

2018   картостили

Стиль виляет картографами

В середине февраля Matthijs Melissen, один из разработчиков стиля osm-carto, предложил улучшить отображение административных границ на далёких масштабах. Пул-реквест не только перекрашивает границы в тёмно-зелёный цвет, но и приглушает эти линии на воде. Посмотрите на результат на этой карте.

Поскольку изменения оказались велики, их решили разбить на части: первая затрагивает только водные границы. Под примерами отображения Matthijs добавил комментарий: «поскольку тег admin_level отсутствует на некоторых линиях границ, потребуется немного покартировать».

Долгое время стиль отражал схемы тегирования: рисовал всё больше и больше значков, разделял или объединял отображение дорог в зависимости от дополнительных атрибутов. Немало было и спорных решений: например, объединение highway=footway и highway=path. Но те решения следовали правилам тегирования, а не требовали что-то в них менять.

На этот раз не так: предлагаемые изменения требуют добавления тегов boundary и admin_level не только на отношения границ, но и на линии в их составе. Конечно, мы часто так и делали, но это не было обязательным. Теперь отсутствие тегов должно было сломать границы стран и регионов на всех масштабах, от самого первого. И поскольку это вопрос тегирования, Matthijs-у пришлось написать в рассылку tagging@.

Хорошая новость: в тему ответили уже девять человек, и все как один удивляются: «ты что, офигел, что ли». Приятно знать, что пропозалы всё так же не проходят — не только полезные, но и такие непродуманные, идущие от даже не технических ограничений, но лени разработчика.

2018   картостили   теги

Бледно, но видно

На прошлых выходных я открыл карту OpenStreetMap для какой-то задачи и сначала подумал, что слой osm-carto кто-то заменил на слой «Спутника». Первый был привычен резкими цветами и сложноразличимыми реками, второй известен бледным видом, где, кажется, ни один цвет не насыщен даже наполовину. Оказалось, наш картостиль снова обновили.

Для версии 4.2.0 поработали над средними масштабами, от 8 до 12. Реки и озёра стали отчётливее, а леса и поля — светлее, чтобы не заслонять важные объекты. Наконец-то реки в лесу видны издалека. Дороги тоже лучше различимы, потому что им добавили яркий, но очень тонкий контур.

Помимо этого, уменьшили межстрочное расстояние в надписях и подписали железные дороги. Эти подписи бросаются в глаза в Москве: теперь я знаю, что живу недалеко от дороги Рижского направления. А в лесах значки показывают тип леса: лиственный, хвойный и т. п. Как это выглядит, смотрите на иллюстрациях к пул-реквесту, а на карте тип обозначайте тегом leaf_type.

Готовность авторов стиля одновременно поддерживать версии 4.x и 3.x быстро сдулась: нововведения щедры на использование дополнительных тегов из hstore. Например, для подписи железных дорог используются теги highspeed и usage, да и про leaf_type старый стиль не знал. Держателям собственных тайловых серверов приходится выбирать: загружать базу для нового osm-carto или для десятков старых стилей. Раньше стили сосуществовали, потому что все делали их совместимыми с osm-carto. Но переделывать их для совместимости с базой версии 4.x никто не будет. Как следствие, альтернативные версии стандартного стиля и он же в сервисах типа MapOSMatic остались на старой схеме и нескоро получат какие-либо из обновлений.

2017   картостили

Два два ноль и три три ноль

В рассылке dev@ с разницей в один день опубликовали два важных анонса новых версий. Во-первых, Брайан выпустил iD 2.2.0. Вторая версия вышла в ноябре, но там не было заметных внешних изменений: повинуясь требованиям Semantic Versioning, первую цифру увеличили из-за несовместимых изменений API. В 2.1.0 добавили поддержку GeoJSON с KML и красивые плавные изменения.

Новый iD больше не рисует меню полукругом при выборе объекта. Столько раз из-за него случайно удаляли дороги или округляли здания! Теперь меню спрятано под правую кнопку мыши, что позволит расширять его неограниченно, а не пока есть места в круге. В теории звучит хорошо, на практике столбик непонятных значков озадачивает. Ждём следующего шага: понятных слов вместо пиктограмм.

Самым опытным редакторам позволили добавлять теги к пакетам правок, а для новичков подготовили новый интерактивный учебник. Пять уроков, от перемещения карты до выравнивания зданий, помогут участникам мероприятий гуманитарной команды избежать обычных ошибок, за которые их ругают осмеры. Для обучения авторы нарисовали небольшой город с рекой, железной дорогой, ратушей, кафе и сеткой улиц. Очевидная искусственность карты подталкивает пользователя поиграть с картой, поудалять нарисованное и добавить какой-нибудь мути.

Разумеется, в релизе много других мелких улучшений. Например, последний комментарий к пакету правок сохраняется (привет всем, кто пишет «fix» или «мелкие правки»), но очищается через два дня. Мультиполигоны в старом стиле выглядят страшно и на них ругается валидатор: хотя из OpenStreetMap их недавно вычистили, пользователь может нарисовать такой случайно. Многие увидят красную коробочку при запуске: там список изменений в версии. Наконец, удалить объект можно только тогда, когда видно не менее 80% его поверхности.

Также вчера Пол Норман объявил о выходе версии 3.3.0 нашего картостиля osm-carto. В нём всё в порядке. То есть, авторы провели несколько рефакторингов, вынеся шрифты в отдельных файл, написав несколько инструкций. Самое заметное изменение — магазины на 17 масштабе рисуются точками, чтобы не отвлекать от других заведений. В репозитории на GitHub осталось всего шесть открытых пул-реквестов. Все они меняют отображение элементов карты (обводки дорог, паромных терминалов, грунтовок и т. п.), и поэтому отложены.

Самое важное в свежем релизе стиля — что он последний в ветке 3.x. Пул-реквесты почистили, страницу со сравнением 3.x и 4.x обновили, стиль 3.3.0 выпустили, временный запрет на визуальные изменения наложили. Следующим шагом в программе будет смёржить ветку lua в master и объявить о выходе версии 4.0.0. После этого в 3.3.x будут только чинить неприятности, да и то недолго.

Что такое ветка lua? Это переработка стиля с условием полной перезаливки базы данных. Подробность Пол расписал в пул-реквесте, а коротко:

  • Колонка типа hstore для каждого объекта. Она даст доступ ко всем тегам, пусть и без индексов. То есть, можно будет обозначить дороги с плохим покрытием или заведения, доступные людям на колясках. Колонка увеличивает размер базы всего на 10%, но позволяет убрать сотню других колонок, выгадав 5%.
  • Мультиполигоны. По умолчанию osm2pgsql разделяет мультиполигоны на отдельные полигоны: так те из них, что пересекают 180 меридиан, не накрывают bbox-ом весь мир. С ключом —multi-geometry мультиполигоны из OSM остаются мультиполигонами в базе. Это удобнее: не нужно собирать государства и острова из тысячу частей с ST_Collect, подписи национальных парков не множатся. К сожалению, это изменение замедлит рендеринг примерно на 5%, сильнее на близких масштабах.
  • Преобразования в lua. Lua — это несложный язык, часто используемый для настроечных скриптов. Предобработка тегов с его помощью в osm2pgsql позволяет указать численный тип для колонок типа population и layer, написать сложные правила построения z_order и отсортировать значения highway и place. Кроме того, скрипт будет отличать замкнутые линии от областей не только по тегам и собирать линии в мультиполигоны. Разумеется, старый стиль мультиполигонов он не поддержит.

Версию 4.0.0 выпустят в этом месяце. В течение пары месяцев ветки 4.0.x и 3.3.x будут развиваться параллельно, чтобы базу можно было перезаливать поэтапно. Следить за подготовкой к перезаливке можно в тикете OWG, пользоваться новым стилем — уже сейчас: пул-реквест приняли в master вчера.

2017   id   картостили
Ранее Ctrl + ↓