Позднее Ctrl + ↑

Новые печатные карты

Заявки на новые печатные карты мы ждем от вас в комментариях к посту про печатные карты, в котором указаны критерии для их создания... Секунду, у нас же не НЯК.

Макс Васильев поделился ссылкой на буклет сегодняшнего чемпионата России по велоспорту в Туле. Красиво оформленные страницы, море информации — и, внезапно, карта маршрута, от которой вытекают глаза. Разумеется, с традиционным нарушением условий использования Яндекс.Карт и традиционным закрытием Яндексом глаз на эту фигню.

До сих пор просто нарисовать маршрут на карте было нетривиально: люди либо снимали проприетарную карту с линейкой вычисления расстояний, либо рисовали линии в пэинте поверх склеенных тайлов OSM, либо фотографировали OziExplorer с треком. Всё это ненормально и извращение. Особенно когда карта нужна для печати, и обычного разрешения в 90 точек на дюйм недостаточно. Что ж, с этого дня получить кусок карты для печати стало проще: теперь есть сервис «Get Veloroad».

Он работает на основе Nik4: указываете размеры бумаги, растягиваете прямоугольник границ печатаемой области, выбираете формат (png, svg или pdf) — и картинка в 300 dpi у вас в кармане. Поверх можно наложить GPX-трек и линейный масштаб. Векторные файлы SVG обрабатываются скриптом склейки букв в слова: их можно загрузить в Inkscape и сместить надписи от маршрута. Наконец, вместо стиля Veloroad можно выбрать «стандартный» стиль osm.org: хватит уже склеивать его тайлы, когда можно получить нужный кусок в 300 dpi (или в обычном разрешении, если указать пиксели).

Единственный недочёт — данные всё так же доступны только для части России и Прибалтики. Граница загруженной области отображена, поэтому даже на слое osm.org вы не останетесь неожиданно с синим квадратом. Сервис не даст создать несколько карт одновременно, поэтому если не получилось — попробуйте через пару минут. Всё лучше, чем вкладка экспорта на osm.org, непредсказуемая и вечно занятая.

Заглянуть в planet.osm

Главное в визуализации плотности данных — выбрать правильные цвета. Мартин Райфер снова посчитал плотность точек на тайл 13 масштаба для всего мира, опубликовав не только две картинки, но и интерактивную карту. Смотреть её нужно исключительно на предельном зуме, исследуя завораживающие текстуры горящей Германии, теряясь в паутине Сибири, утопая в черноте Атлантического океана и домысливая картинку за гранью импортированных квадратов в Канаде. Эта карта, почти, но не совсем, непохожая на спутниковый снимок, как будто что-то говорит нам об OpenStreetMap и её участниках, — но нет, показалось.

Воскресенье потерь

Главный блог OpenStreetMap (заголовки переводов которого выведены в левую панель штосма) выглядел живым преимущественно из-за еженедельных сводок Паскаля Найса и Денниса Зилстры. Уже нет: в воскресенье опубликован последний выпуск, редакторы устали и уходят. Как подтверждение, что новости никто не читает, сожаление в комментариях выразили лишь трое человек. Других заметок в блоге за этот год опубликовано шесть, если не считать новогоднего поздравления, все — зимой. Последним новостным блогом с регулярными обновлениями остался немецкий, который ведёт толпа из десяти человек. Месяц назад он отпраздновал двухсотую заметку статьёй про ведение блога. Его твитер, увы, тоже сдулся: хоть и выглядит живым, но лишь анонсирует заметки в блоге и ретвитит фигню.

Неуловимая команда дизайнеров AltogetherLost в то же воскресенье объявила, что закроет сервис OSMRanking. Люди сразу возмутились: как же так, хороший сервис, всё время там статистику смотрим. Никто не упоминал названия, но дизайнеры почувствовали непонимание и пояснили: остановят кривоватый OSMRanking, а всеми любимый OSMStats продолжит работу.

Утром 16 июня GaM огорчил велосипедистов, пользовавшихся его модификацией гарминосборки всей России: перейдя на андроид, он потерял к ней интерес и забросил. Несмотря на панегирики пользователей, он отказался открыть исходники стиля, хотя автор исходной сборки, от которой форкнул свою GaM, считает, что по лицензии должен был. Пользователи ушли в тему сборки Макса Васильева, где помогают улучшить её отображение на мелких экранах навигаторов.

Сегодня я обнаружил, что двумя воскресеньями ранее Роберт Лайп, автор GPSBabel, поправил, наконец, номер версии формата OpenStreetMap в своей программе (был 0.5, хотя формат не отличался от современного; новый релиз ещё не выпустили). Я иногда пользовался ею для преобразования из GPX в OSM: JOSM зачем-то разделяет трек и вейпоинты, и не даёт сделать слой OSM из последних. Комментарий к правке кода обескураживает: «поскольку этот формат почти не используют, видимо, поддержку OSM мы прекратим».

Есть и хорошая новость, одна: Алексей Илларионов оживил Mapzen POI Collector для андроида, поправив несколько ошибок, русский перевод и панель действий. Он обещает продолжить работу, если программа кому-нибудь пригодится.

История вопроса

На этой неделе у меня пошли гениальные идеи, как нам обустроить API. Ночная беседа с jekhor про проблемы отношений веломаршрутов утром понедельника конденсировалась в тикет в Rails Port, где я предложил добавить в возвращаемые объекты ссылки (тип и id) на содержащие их линии и отношения. Так редактор всегда будет знать, что точки и линии принадлежат неподгруженным объектам, и сможет предупредить пользователя перед разбиением или удалением. После обычных комментариев непонимания обсуждение перешло на технические проблемы и вопросы совместимости, и вечером на встрече рабочей группы по технологиям (EWG) мы согласились, что добавление нового тега в вывод API сломает какие-нибудь программы, вроде osmosis. Поэтому пора повышать номер версии OSM API.

В вечерней беседе после конференции промелькнула мысль, что если мы так и будем ждать от API 0.7 великого (см. список предложений и сокращённый список), он никогда не наступит. Поэтому нужно двигаться мелкими шажками: например, поправить бардак в статусах ошибок HTTP, добавить мелкие валидации, формат JSON, всё такое. На этой волне я составил список, выросший за неделю до 14 пунктов, большая часть которых решается парой запросов к базе данных (а то и вовсе парой строк кода). Задержав окончание собрания на час, мы с Мэттом Эймосом договорились, что пора делать форк, или как там добавляется новый API к серверу. Просто чтобы была площадка для экспериментов, и чтобы дать старт. Вполне вероятно, на следующей неделе будут сделаны первые запросы к ...dev.openstreetmap.org/api/0.7.

Конечно, согласившись, что изменения должны быть мелкими, я не продержался и часа, чтобы не взяться за вечную проблему API 0.6: тип объектов area. Подходов к нему было множество, хотя после ноября 2012 года, когда Jochen Topf написал заметку про области, копошение затихло. Что печально: ни один из вариантов не был идельным. Например, решение для береговых линий было только у совсем диких предложений. Не совместив в едином типе здания о четырёх стенах и береговую линию, нечего и думать о свержении статуса-кво. Пришлось подумать очень хорошо, и решение оказалось достаточно простым, похожим на предыдущие попытки, и одновременно отличающимся в деталях.

Предлагаемые области содержат списки точек для каждого из внешних и внутренних контуров: как линии, только вместо одного списка — несколько. По сути, это полигоны модели Simple Features, со всеми плюшками и ограничениями, и их преобразование в формат Shape / PostGIS будет элементарно. Недостатки — невозможность делить часть контура между областями и ограничения на количество точек — исправляет второй способ задания областей. Он похож на мультиполигоны, но наоборот: не область ссылается на линии, а линии на область. Так можно совместно одновременно редактировать одну и ту же область (привет трогавшим границу РФ), и не будет конфликтов, потому что сам объект не изменяется. Со стороны базы это не отличается от мультиполигона: всё то же отношение «многие ко многим», но без явного списка для потребителей данных. При этом все точки и линии, составляющие контуры, сортируются против часовой стрелки для внешних контуров и по часовой для внутренних: это позволяет правильно отобразить частично загруженные данные (у мультиполигонов с этим беда). В вики есть наглядный пример с картинкой, но если объяснить ещё проще, вместо полигонов будут костлайны. Вопрос «делать Онежское озеро мультиполигоном или костлайном» отпадёт автоматически.

Одного видения для внедрения типа area недостаточно: нужно продумать алгоритм миграции базы данных, написать новые api и страницы для Rails Port, обновить cgimap, сделать поддержку в каком-нибудь редакторе (и, боюсь, level0 недостаточно) и в каком-нибудь рендерере (хоть osmarender). Написать сотню тестов и убедить всех, что идея работает. Только после этого, когда мутный поток «а вот я бы сделал так» иссякнет, а форк будет готов к пул-реквесту, вопрос «а не сделать ли нам тип area вот так» приобретёт достаточный вес. Право, лучше не мучаться, а ограничиться для нового API правкой статусов ошибок, мелкими валидациями и парой новых запросов к базе данных.

Карты своими руками

Конференция State of the Map EU 2014 закончилась, если вы пропустили отчёты в штосме, почитайте: четверг, утро пятницы, вечер пятницы, утро субботы, вечер субботы, воскресенье.

Посмотреть все 48 видеороликов на канале sotmeu нереально, но некоторые из них очень хороши. Вот те, что мне понравились, и, по-моему, обязательны к просмотру:

  • Ilya Zverev: I’ve Bought a Car for Mapping, Now What? (12 минут доклад + 8 вопросы) — как я могу не включить свой доклад, раз я посчитал тему достаточно важной для сотма, а организаторы поставили его первым в программе? Тут я презентую программу NanoLog и плагин для JOSM, о которых говорил ещё на МММ 2012, но только неделю назад добил до возможности мапить собранные данные. Они предназначены для картирования на большой скорости без отвлекания: из автомобиля, велосипеда, поезда.
  • Roland Olbricht: Sparse Editing (17+5) — как редактировать сети рек, железных или обычных дорог, как править общественный транспорт в слишком хорошо прорисованном городе, как не сломать отношения, качая данные не полностью. Конечно, используется Overpass API через плагин mirrored_download в JOSM.
  • Andy Allan: Lightning Map Tiles (23+6) — Энди, автор стилей OpenCycleMap, Transport, Outdoors и т. п., попробовал перейти с растровых тайлов и TileMill 1 на векторные и TileMill 2. Получилось, но процесс оказался очень уж муторным, большей частью из-за джаваскрипта, на котором написаны новые инструменты. Тем не менее, векторные тайлы — наше будущее (пусть пока у всех они в разных форматах), и этот доклад поможет их понять.
  • Oliver Tonnhofer: Imposm (21+5) — кто мучался с osm2pgsql, будут поражены возможностями альтернативы, Imposm. Остальные узнают, что именно делает osm2pgsql, почему это неудобно и медленно, и почему заменить его пока не получается.
  • Michael Collinson, Alex Barth: The State of the License (10+11+25) — MapBox в лице Алекса Барта хочет поменять нашу лицензию, убрав условие Share-Alike. Для противовеса организаторы выставили Майкла Коллинсона с докладом о работе LWG. Вот вики-страница, которую он упоминает. Аргументы Алекса очень сильны, поэтому 25 минут на обсуждение явно не хватило, и за ланчем многие продолжили дискуссию. Например, я рассказал Майклу про проблему с отсутствием в лицензии явного требования писать копирайт поверх карты, которое мы предъявили Спутнику и 2ГИС.
  • Jerry Clough: Woodland Cartograhy (15:30-21:30, 6 минут) — короткий доклад про отображение лесов на картах сквозь века, как мы пришли к банальной зелёной заливке, и как исправить ситуацию. Также Джерри перечисляет свойства массивов деревьев, которые многие могут снять самостоятельно с минимумом подготовки. На вопрос о новой схеме leaf_type / leaf_cycle, которая заменяет wood=*, он называет её значительным улучшением, пусть и с сомнительным названием тега.
  • Kaido Irval: Google Glass Maps SDK (26:30-33:30, 7 минут) — короткий пиар библиотеки Nutiteq для карт на Google Glass. Всё трёхмерное, с отображением и поиском POI. В конце он показал трансляцию с очков, я проверял — внутри выглядит так же. Интересно, что все данные заливаются на очки, и рендеринг идёт с них же. Едва ли это можно назвать технологией будущего, но очень круто, что OpenStreetMap стал первой картой на устройстве Google.
  • Tim Waters: OpenHistoricalMap, Serge Wroclawski: Changeset Discussions и Richard Fairhurst: OSM Routing for Cyclists (5:00-23:00, 18 минут) — три коротких доклада, каждый из которых даёт новую перспективу на нашу базу и наши данные. Тим показывает проект с картами прошлых веков, которые странно выглядят в современном оформлении, отрендеренные мапником. Ричард как всегда блистательно, со смешными слайдами, рассказывает о трудностях построения веломаршрутов по нашим и чужим данным. Кажется, на любой конференции, где выступает Ричард, кроме его доклада можно ничего и не смотреть, насколько он занимательно рассказывает.
  • Закрытие конференции (12 минут) — ничего нового и технологичного, конечно, вы не услышите, но такие метадоклады — единственный шанс почувствовать атмосферу конференции. Кроме того, тут демонстрируют десятку самых популярных плакатов. Хэнк Хофф в конце зажигает и заманивает на аргентинский SotM в ноябре.

Всего три часа, примерно как один длинный фильм. Если захочется добавки, посмотрите ещё эти доклады:

  • Thilo Stapff; Johannes Bouchain: OpenGeofiction (28+6) — проекты на стеке OSM с совершенно другими даными внутри всегда интересны. Тут интерес двойной, потому что несколько десятков активистов (и сотни праздношатающихся) создают совершенно новый мир, не основываясь на каких-то реальных картах или иных произведениях. Кажется, с таким подходом сайт должен превратиться в песочницу и месиво, но результат оказался стройнее и красивее.
  • Yubin Kuang: Mapillary — the missing view of the planet (18+8) — не наши собственные, но полностью открытые для OpenStreetMap фотографии улиц всего мира (конечно, треть базы наполнена немцами, как всегда). Доклад очень прост, но компенсирует отсутствие статьи про проект в штосме: была занимательная история с лицензией, когда они сначала выбрали CC-BY-NC, но мы их убедили, что последний вагон нужно отцепить.
  • Jerry Clough: Beyond the 3 «R»s (26+4) — уже упомянутый мной доклад про нюансы аналитики по данным OpenStreetMap. Джерри каждый раз удивляет неожиданными предметами анализа и глубоким знанием инструментов, предметной области и OSM, что редко встретишь в современных аналитических статьях.
  • Jochen Topf: Osmium to the Rescue (38+20) — запись мастер-класса по библиотеке Osmium, за которой местами сложно следить из-за необходимости понимать код C++11. Тем не менее, Йохен хорошо объясняет сложности обработки данных, показывает свой конечный формат представления OSM для фильтрации через grep и cut, и даёт несколько примеров использования [весьма ограниченного] консольного интерфейса к библиотеке. Для osmium есть маппинг в javascript, но хотелось бы такой же для python.

Участники конференции делали до обидного мало фотографий, и у меня редко был выбор для заметок. Икия только сейчас опубликовал снимки рельефной карты для слабовидящих: Lulu-Ann принесла целую коробку подобных, и на ощупь они поразительны. Конечно, готовят их вручную и за огромные деньги. Наши эксперименты с рельефными тайлами пока не так впечатляют, но показывают, что перспектива есть.

Ранее Ctrl + ↓

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