Лупа и чашка

20 июля, 17:07

Логотип JOSM — одно из немногих творений, до которых не добрался редизайн логотипа OpenStreetMap 2011 года. Части программистов проекта это надоело, но зачем менять только часть картинки, когда можно выдумать новую целиком? Тем более, что старый логотип существует только в виде растрового квадрата. Так что с этого дня начинается конкурс логотипов JOSM: до 30 сентября отправляйте векторные рисунки в SVG на contest@josm.openstreetmap.de. Логотип должен быть легко обрезаем до квадрата, хорошо бы дать примеры вертикального и горизонтального баннеров, и лицензия — только CC0. Ввиду последнего, наверное, автор лучшего логотипа может рассчитывать только на упоминание на главной странице сайта JOSM: никаких призов на вики-странице нет.

Не обязательно логотип должен быть связан с OSM: так, значки iD, Potlatch 2 и Merkaartor (у последнего уже умер сайт) абстрактны, как и у Pushpin. Единственное исключение — редактор Vespucci, который в качестве значка банально использует старый логотип OSM без изменений.

Новейшая история

18 июля, 0:27

Перед европейской конференцией, в начале июня, Роланд анонсировал в talk@ несколько нововведений в Overpass API. Первое — дополненные диффы, которые копились на сервере с сентября 2012 года, теперь генерируются на лету. Помимо освобождённого терабайта, это позволяет фильтровать диффы запросами Overpass: например, получать их для выбранной области.

И раз сервер теперь помнит историю, почему бы не добавить соответствующие запросы — к «чердаку», как называет это Роланд? Дописав в начало [date:«2014-07-11T08:00:00Z»]; (с обычными кавычками), получите данные из этого дня, как если бы делали запрос неделю назад. Разумеется, есть аналогичный запрос на разницу между двумя датами. Автор предупреждает, что из-за глюка в обновлениях данные до 2 июня временно ненадёжны.

Норберт Реннер по такому случаю вернулся к своему визуализатору правок Achavi. Старая версия давно живёт на overpass-api.de, а новая — на гитхабе автора. Она не спешит качать диффы, а предлагает приблизить интересующее место и нажать кнопку «load» слева вверху. Через несколько секунд вы увидите визуализированные правки за последние сутки. Границы временного интервала можно поменять.

И, впервые в проекте, можно визуализировать произвольный ченджсет без многочасового ожидания в очереди, просто добавив к адресу ?changeset=123456. Да что там, держите букмарклет: Changeset (перетащите в закладки). Он не покажет отношения, чтобы не замусоривать карту; для этого добавьте &relations=true. Напомню, что тёмно-красным отображается старая геометрия сдвинутых объектов. Теперь ожидание нового OWL станет менее томительным.

Узлы безумия

9 июля, 23:44

Сегодня Мартин Коппенхёфер опубликовал пропозал моей мечты под названием «Node relations». В нём он предлагает в ситуации, когда, например, на одном столбе несколько разных знаков, не накладывать точки одна на другую, и не пользоваться мерзким «;», а создавать «виртуальные узлы» с помощью отношений. В отношении type=node может быть только один член — точка — и какие угодно теги.

Это ещё один шаг к разделению геометрии и её свойств. Когда-то давно я предлагал радикальное изменение модели OpenStreetMap: запретить теги на точках и линиях, все сущности обозначать отношениями. Если вдобавок освободить отношения от геометрического смысла (т. е. вместо мультиполигонов сделать тип area), это устранит все двусмысленности в данных, позволит сохранять идентификаторы при перерисовке геометрии, позволит объединять, например, линии в сущность «улица», и заставит, наконец, программистов сделать нормальное редактирование отношений.

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

До 19 июля идёт голосование за обозначение портов и перегрузочных терминалов. Голосуют пока какие-то незнакомые люди. Рассылку tagging@ читают всё меньше нормальных людей, проще изучить C++ и уйти в программирование, чем спорить с тегоманьяками. Недавно, вон, кто-то предложил способ обозначения дверей, так его оборвали на полуслове: был уже такой, отклонили восемью неизвестными. Автор в сердцах написал за ночь 30 килобайт второй версии пропозала, и с лёгким сердцем выкинул его из головы.

Главное — участие

29 июня, 17:50

Открылась регистрация на конференцию State of the Map в Аргентине (9-11 ноября). Красивый, но бессодержательный сайт конференции заработал чуть раньше. Не обязательно спешить с регистрацией, хотя откладывать тоже нет причин: стоимость не вырастет через два месяца, а если пропустить «бизнес-пятницу», то участие вообще бесплатно.

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

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

28 июня, 14:57

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

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

До сих пор просто нарисовать маршрут на карте было нетривиально: люди либо снимали проприетарную карту с линейкой вычисления расстояний, либо рисовали линии в пэинте поверх склеенных тайлов 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

27 июня, 17:24

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

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

26 июня, 21:37

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

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

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

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

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

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

25 июня, 0:29

На этой неделе у меня пошли гениальные идеи, как нам обустроить 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 правкой статусов ошибок, мелкими валидациями и парой новых запросов к базе данных.

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

17 июня, 14:57

Конференция 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 принесла целую коробку подобных, и на ощупь они поразительны. Конечно, готовят их вручную и за огромные деньги. Наши эксперименты с рельефными тайлами пока не так впечатляют, но показывают, что перспектива есть.

Долгая прогулка

16 июня, 2:55

Кажется, что живу в Карлсруэ уже вторую неделю: вокруг все знакомые улицы, каждый день одни и те же люди, на трамвае катаюсь, разные пивные посещаю. Сегодня ездили за город ввосьмером, включая меня и Кирилла. Немецкие поезда ездят слишком быстро: услышишь лишь когда тебя уже переедут. Со второго раза мы нашли вход в заповедник, где Джерри предупредил: шаг в сторону — утонете в болоте, наберётесь клещей и нарушите экосистему. Жаль, не распечатал заранее обходные листы: гуляли просто так (треки уже в OSM), рассматривали деревья и птиц. У одного озера тропинка поднята на деревянный настил, который замаплен как highway=path + bridge=yes: оксюморон в русской системе тегов. Региональные различия (как и тегирование мостков) не раз обсуждались в перерывах конференции, и стали темой доклада Кирилла.

Пригородный трамвай S5 едет по железной дороге, затем сворачивает с неё, проходит через центр города и уходит обратно на ж/д. Он доставил нас почти к месту проведения Hack Day. Как и конференция, день был организован безукоризненно: два зала для программирования (один пустовал, поэтому в нём обедали традиционным немецким блюдом — шавермой на вынос) и лекторий. Я посмотрел только мастер-класс Энди Аллана про главный наш картостиль, но программировать свои штуки в тишине как-то интереснее. Все пять выступлений записаны, в канале SotM EU выложены все видеозаписи до единой. Профессионализм нанятой видеокоманды зашкаливает.

Вечером, как водится, пошли в бар. Последняя ночь сотма — самая интересная: обмениваемся историями и обсуждаем важности как в последний раз. Многое забывается, но надеюсь, узнанное прирастает в памяти ассоциативными связями. Энди, например, на неделе обнаружил и поправил два бага в Rails Port, в интерфейсе взаимодействия с Potlatch 1. Из-за него в pbf с полной историей нашёлся неправильный символ юникода, который ломал конвертирование в xml. Ричард порадовался, что поддержкой своих редакторов давно не обязан заниматься. Вместо программирования он поехал утром на велосипеде в Чёрный Лес и на Рейн, переплывая на пароме который, удивился скорости течения. Как и остальные англичане, он приехал на поезде. Говорят, туннель неинтересен, но скорость покидания Лондона поражает: десять минут — и он далеко на горизонте.

С Энди Алланом много чего успели обсудить, включая API 0.7: очевидно, главная проблема, задерживающая новый апи, — мы стараемся напихать в него всего по максимуму. А если не спешить и провести сначала малые изменения (исправление кодов HTTP, получение удалённых объектов в bbox, json и тому подобное), то всё пройдёт более гладко. Area, конечно, тоже нужен, но чтобы выбрать правильный подход, нужен программист на Ruby, Java и C++ с кучей свободного времени. Посетовали, что MapBox превратился в наш гугль: сначала всем кажется, что крутой, но как-то слишком далеко заходит. И не релизил ничего очень давно, лишь собрал и запер всех хороших программистов. Велика вероятность, что ни мапников, ни OSRM, ни тайлмиллов больше не будет: вектор развития MapBox — в векторных картах и GL (сидящего за соседним столиком Алекса решили не беспокоить). Что касается стиля osm.org, мысль о создании второго «стандартного» стиля, ориентированного на нормальных пользователей, прорабатывалась на конференции в Портланде, но дальше общего плана и цветовой схемы дело не зашло.

Три года назад я чувствовал себя зелёным новичком среди гигантов — сейчас это смешно вспоминать. Мы все одинаково хорошо понимаем и участвуем в OpenStreetMap, кто-то программируя, кто-то — собирая данные. В свете пропорции технических и полевых докладов, ещё непонятно, чья работа важнее. Новички привносят свежий взгляд на наши вечные проблемы, участники в возрасте часто имеют несколько увлечений, на стыке которых проявляются интересные применения карте. Конференции проводят не для докладов (в этот раз программа была так себе), а для встреч вживую. По ощущениям, это были лучшие четыре дня среди осмосообщества, они наполнили идеями, валидировали мою работу и дали энергии продолжить написание разных полезных запланированных штук. Организаторы — прежде всего, Фредерик и Кристина, — были великолепны с утра до ночи: никаких заминок, все залы идеальных размеров, ноль проблем с интернетом, хотя было за 300 устройств и выкачали 400 гигабайт; буклет и карта радуют глаз, навигация безукоризненна (т. е. стрелки каждые 10 метров), бесплатные вода и лимонады на каждом шагу, конкурс плакатов, опять же. Этот State of the Map EU задал новую планку, которую придётся держать в следующем году — надеемся, в Восточной Европе.

(фотографии Jerry Clough, @osm_at и @thomersch)

Ctrl +  Ранее