Позднее Ctrl + ↑

Гонка за JSON

Что это я всё хвалю iD — у него тоже проблем хватает («ахаха» — раздаётся от жосмера в голове). Например, Саймон Пул четыре дня назад заметил, что в некоторых регионах данные не подгружаются, без причин и без ошибок. Какие-то слова про undefined в консоли, и всё.

Позавчера Квинси понял, что выпадают объекты, нарисованные анонимными пользователями до 2009 года. У этих объектов нет поля uid, чего редактор не ожидал. Но тогда вопрос, почему раньше этой пропажи никто не замечал? Ответ — в JSON.

Мало кто любит XML. Это структурированный формат, который может хранить любую структуру данных, но слишком многословен и требует сложных преобразований. С популярностью JavaScript разработчики предпочитают использовать другой формат хранения данных, JSON (JavaScript Object Notation). Формат жёстко регламентирован, но по сути, представляет собой кусок кода, который интерпретатор JS может быстро превратить в объект. Сюрпризов у него никаких, структура очевидная для программистов, в отличие от XML, поэтому формат пихают везде: например, вам может быть знаком GeoJSON.

OSM API всегда отвечал в формате XML. Но в сентябре 2018 года cgimap научился возвращать ответ в формате json. Для этого в запросе нужно указать правильный заголовок Accept или добавить в конец расширение .json (например). Одним из первых новому формату научился важнейший запрос /map (получение всех данных в прямоугольнике), затем пошли остальные. Но, поскольку формат ещё не поддерживал Rails Port (часть API, написанная на Ruby on Rails), json временно отключили.

Разрыв нужно было закрывать: участник Mmd в мае 2019 года сделал пул-реквест в вебсайт, но мы знаем, как у нас проходят пул-реквесты. Второй пул-реквест он создал в декабре. Он был проще, обсуждение сразу пошло: всего через полсотни комментариев, в феврале, правки приняли, и теперь объекты можно получать в любом из двух форматов.

Тут все посмотрели на iD. Для кого ещё писали поддержку json, как не для редактора на JavaScript? И да, всего через неделю соответствующие вызовы заменили — поддержку нового формата тот же Mmd написал ещё год назад. Но свежий релиз редактора готовился-готовился, прошёл один месяц, второй... В общем, строчка про json утонула в списке изменений версии 2.18, вышедшей две недели назад. Отсюда и проблема, найденная Саймоном: формат ответа API поменялся, его обработка тоже, и анонимные правки забыли протестировать. Ошибку починили буквально вчера.

По замерам Mmd, использование json для скачивания данных ускорило iD примерно вдвое. Перемещение карты в редакторе действительно ощущается быстрее, контрастируя с заторможенным интерфейсом редактирования тегов.

Подгрузку данных в редакторе ещё можно ускорить, и даже в несколько раз. Сам запрос /map невыносимо медленный: сервер делает несколько запросов к базе данных на каждый объект в ответе, что, как посчитал Дорофей «Komяpa», ограничивает скорость получения данных до примерно 2000 объектов в секунду. Именно поэтому iD разрешает редактирование от 16 уровня масштаба, а не дальше. В 2016 году Дорофей переписал запрос к карте на чистый SQL, ускорив его на порядок, но его предложение погрязло в комментариях, а после добавления формата json и вовсе устарело. То есть, мы знаем, что скачивание данных можно ускорить, но для поддержки быстрого кода нужны знания PostgreSQL, которых нет ни у кого из админов.

Обновление: Mmd в комментариях замечает, что запрос /map переписали в 2018 году, ускорив его даже лучше, чем это сделал Дорофей. Так что последний абзац уже неактуален.

Залив не залить

Файлы и отображение береговой линии в OpenStreetMap не обновлялись между 9 января и 25 июля, более полугода. Никто этого не заметил, потому что активные осмеры давно уточнили свои берега и обращают внимание на другие, сухопутные объекты. JesseFW описал, что произошло, и Кристофф докинул интересных ссылок и объяснений в комментариях. Если коротко:

  • Береговые линии собирает отдельная группа людей, не те, кто делает картостиль или администрирует серверы OSM. Это немцы внутри организации FOSSGIS, в частности Йохен Топф.
  • Скрипт сборки работает автоматически, но перед публикацией делает простые проверки собранных полигонов. Например, что геометрия не имеет самопересечений, или что размер суши изменился не более, чем на 0,15 км².
  • Если валидатор заявил об ошибке, новые полигоны нужно одобрить вручную, либо пойти исправить ошибку.
  • В январе кто-то перерисовал залив Rio de la Plata рядом с Буэнос-Айресом с береговой линии на озеро (или наоборот). Йохен не знал, что с этим делать, и оставил полигоны без изменений.
  • Через три месяца отсутствие обновлений заметили, но даже откатить это изменение, чтобы применились остальные, было поздно: сумма изменений давно переросла площадь отсечки.
  • Все ссорились ещё три месяца.
  • Вчера Йохен плюнул и одобрил свежую сборку.

Проблема залива сводится к тому, что считать его внутренним морем удобно для разграничения территории между Аргентиной и Уругваем, но если natural=coastline отодвинут, то Буэнос-Айрес получается совсем не прибрежным городом. Стороны привлекают аргументы типа солёности воды, приливов и спутниковых снимков (как в заголовке этой статьи). Обычная политика, какой много в мире и в проекте. Но интересна проблема с выгрузкой береговой линии тем, что она подчёркивает, как близки в OpenStreetMap технические и идеологические решения.

Ведь Йохен, по сути, взял на себя чисто техническую задачу: смотреть вывод валидатора и править ошибки в тегировании и геометрии. Я этим же занимался в Maps.Me в своё время. Однако рано или поздно ты понимаешь, что нажав кнопку, ты не только одобряешь консистентность данных, но и поддерживаешь позицию одной из противоборствующих сторон. А таких сторон в OpenStreetMap сотни, и сколь бы побочной не была твоя работа, проскользнуть между всеми не удастся.

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

В идеальной базе геоданных территории не принадлежат нескольким государствам одновременно, озёра и леса не накрывают одни и те же поляны, названия всегда распределены по языкам и однозначны, а атрибуты не дублируются на точках и полигонах. Любая дискуссия быстро заканчивается резолюцией управляющего органа: рисуем так, а не иначе. К такому идеалу стремится НЯК, но никак не может его достичь. Идеальную карту скучно рисовать. Именно из-за недосказанностей и рекомендаций вместо правил в OpenStreetMap всегда увлекательно.

Третий редактор

Написав заметку про iD, немедленно задумался: а где третий? Почему из настольных редакторов у нас выбор только между iD и JOSM?

Когда я только пришёл в проект, редакторов было три: Potlatch, JOSM и Merkaartor. Первый выбирали за простоту, второй — за фичи битком. Последний был непривычно быстр и выглядел как нормальное приложение, потому что написан на C++. Увы, соавторы для него не нашлись, поэтому Ладислав лишь чинит редкие ошибки и выносит отвалившиеся фрагменты. Последний релиз Merkaartor был в ноябре прошлого года. Пользователей он начал терять в 2013 году, уйдя глубоко в низ рейтинга вслед за Potlatch 1. Тогда же по количеству правок он уступил третье место iD, а в 2018 его сдвинул с четвёртого Go Map.

С 2013 года у нас всё ещё три популярных настольных редактора: JOSM, iD и Potlatch 2. Написанные на Java, JavaScript и Flash. Очевидно, что последний живёт только благодаря упоминанию на главной странице — хотя сам по себе он очень хорош, быстрый и простой, особенно если выучить кнопки. Но люди стремительно его забывают: сейчас он тоже уполз вниз, им пользуются для правки карты реже, чем даже OsmAnd. 31 декабря Potlatch умрёт, как я упомянул в прошлой статье, потому что Adobe прекращает поддержку Flash, и его окончательно выпилят из браузеров. Предложение Ричарда отвязать редактор от браузера Совет решил не принимать.

Так что да, выбор между iD и JOSM. Почему никто не начинает писать полноценный десктопный редактор OpenStreetMap? В списке редакторов вообще никаких намёков: есть тематические, есть обрезки, встроенные в ГИС и операционные системы, но ничего, что может заменить даже Potlatch 1. Получается какая-то двухпартийная система: не нравится JOSM — добро пожаловать в iD, у него отличный интерфейс, понятные панели и не нужно бороться с JRE. Не нравится iD — ставь JOSM, он работает офлайн у него сотни модулей и стилей оформления карты. Но... Может, нужно больше вариантов?

Кажется, тут я должен топить за поиск революционера и больше альтернатив — но данные подсказывают, что правильнее наоборот. Таблицей количества пользователей правят мобильные и тематические редакторы: у Maps.Me пользователей в полтора раза больше, чем у JOSM, и четвёрка StreetComplete — Osmand — Vespucci — Go Map тоже в сумме бьёт его по пользователям. А ниже притаились настольные и веб-редакторы отдельных элементов: GNOME Maps, OsmHydrant, Level0. Кажется, картографам их достаточно. В мире редакторов назрел перелом, и честно говоря, давно пора.

Простые и тематические редакторы — это всё, что нужно OpenStreetMap на нынешнем этапе развития. Прошло время первоначального накопления геоданных, теперь их нужно дополнять и обновлять. Поэтому каждый пятый человек, правящий данные, делает это с телефона, с улицы. Вместо количества нужно качество — незаметное, не требующее больших пакетов правок, но на которое нужны десятки тысяч людей во всех концах мира. Чтобы нарисовать пропущенную дорогу, достаточно одной кнопкой открыть iD и ещё тремя её обозначить. Всё остальное на карте уже есть.

JOSM устарел. Нам не нужен не только третий редактор, — нам уже не нужен JOSM. Рисовать тысячи домиков и сотни километров грунтовок по снимкам отлично получается у участников Missing Maps и прочих мероприятий гуманитарной команды. JOSM не только оптимизирует массовое рисование, которое давно устарело. Он местами вредит проекту и другим картографам. Например, удобством работы с мультиполигонами — стали бы вы рисовать «лоскуты» в iD? А каково их там править? Размером пакетов правок (в среднем 150 объектов против 50 в iD) — все валидаторы жалуются на плодовитых картографов. Лёгкостью подключения слоёв гугля и кадастра. Тем, что система модулей позволяет писать системы тегирования, которые вручную применять невозможно. Сложность JOSM проникает в OpenStreetMap и делает его сложнее.

Достаточно iD. Для крупных же правок у нас появился новый инструмент: RapiD. Основанный на том же iD, в нём одной кнопкой можно добавить сеть дорог, тысячи домиков и прочие данные через платформу Esri. Он закрывает вопрос импортов и раскрашивания «белых пятен». Где нет в RapiD, туда нагонят картографов крупные корпорации (в экономически интересные регионы) и гуманитарная команда (в менее интересные). Эта ситуация установилась с прошлого года, таков теперь OpenStreetMap.

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

Наше дело больше не рисовать основные дороги и не следить за валидаторами. Можно расслабиться, взять в руки обходные листы или StreetComplete и выйти на улицу как десять лет назад. Позаносить парикмахерские и люки. Обойти соседний двор и нарисовать в нём тропинки и заборы. Для этого достаточно веб-редактора, он нынче удобен даже на планшете со стилусом. Или мобильного приложения — а их становится больше с каждым месяцем.

Ричард всё объяснил

В официальном блоге появилась невзрачная заметка: институт открытых данных спонсировал две управы в Великобритании, чтобы они посмотрели на OpenStreetMap. В рамках этой работы Ричард Фэйрхёрст подготовил документ, объясняющий основные вопросы проекта и подсказывающий способы интеграции данных.

Я прочитал все двадцать три страницы, и ребята, это он. Документ, каждая страница которого сочится пользой и правдой об OpenStreetMap. Каждые три страницы я порывался переключиться на вкладку штосма и начать восторгаться, но заставил себя досидеть до конца. Ричард не зря двадцать лет работает писателем: короткие абзацы по три-четыре строки исчерпывающе формулируют основные принципы нашего проекта, от «никакой организации в OSM нет» до «виртуальные объекты не мапим, но для административных границ делаем исключение, потому что это удобно».

Хватит объяснять каждой новой организации основы OpenStreetMap сызнова, теперь достаточно отослать им руководство Ричарда. Там есть всё, о чём можно подумать. Зовут в компанию рассказать про OSM? Берёте этот документ и нарезаете на слайды. Не нужно вспомнинать, не нужно вообще думать. Вопрос регулирования импортов закрыт. Осталось, наверное, написать всё то же самое на русском языке.

iD удобнее JOSM

Квинси Морган объявил о выходе свежего редактора iD версии 2.18. Его анонсы нужно видеть: это не просто список, как в гитхабе, но комикс из девяти слайдов по основным фичам. Прошлую версию анонсировали в блоге редактора (у iD есть блог!), но за полгода авторы, видимо, о нём забыли. Прочитайте то и то: узнаете, как делать мосты и туннели одной кнопкой (а не разделить-разделить-добавить тег, как раньше) и открывать детектированные Mapillary объекты, типа знаков.

Главное, что открыли эти твиты, — что iD стал первым большим редактором, которым не больно пользоваться с тачпада. У которого, напомню, нет правой кнопки. Теперь с ноутбука можно править карту! Можно даже нажать «править» на айпаде и не расплакаться от невозможности подвинуть дом под снимок. Я всю весну сидел с мышкой, у которой сломана правая кнопка, и тупо не мог пользоваться JOSM из-за этого. мой тикет про альтернативы правой кнопке висит без движения с 2014 года.

Как и Potlatch (который умрёт в декабре), редактор iD понятен без слов, но работать с ним становится офигенно, если помнить о клавиатуре:

  • Пробел — замена левой кнопке: выбирать объекты (с Shift можно много), двигать точки, открыть меню, если подержать.
  • Стрелочки — двигать карту (как Shift-потянуть левой кнопкой или двумя пальцами по тачпаду), а Shift+стрелочки — двигать выбранные объекты.
  • Масштабировать двумя пальцами по тачпаду, двумя пальцами + Shift (так привычнее) или кнопками — и = (я думал, JOSM обломается приближать по + без шифта, а оказалось — не смог отдалить по минусу).
  • 1, 2, 3 — новые точка, линия, полигон. A — продолжить линию.
  • M — двигать линию. Случайно сдвинуть домик или дорогу, как в JOSM, не получится.
  • V — развернуть линию (буква похожа на стрелочку), S — выпрямить (от straighten), D — отсоединить линию от всего или точку от линии, X — разрезать линию в точке.
  • O — сделать круглым, Q — сделать квадратным, R — повернуть.

Короче, всё в справке и во всплывающем меню. iD всё ещё чудовищен, если нужно добавлять необычные теги (а до панели тегов крутить и крутить) или наводить порядок на карте, но для мелочей типа дорисовки пропущенной тропинки он уже задвинул JOSM. Так что у меня пакетов правок с ним теперь больше — вот бы я удивился этому лет пять назад.

Новостей про третью версию iD нет.

Ранее Ctrl + ↓

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