92 заметки с тегом

osm.org

Позднее 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 году, ускорив его даже лучше, чем это сделал Дорофей. Так что последний абзац уже неактуален.

 3 комментария   2020   id   osm.org

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

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

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

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

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

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

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

 2 комментария   2020   osm.org   теги

Не согласны делиться

С первого октября в рассылке osmf-talk люди обсуждают public domain. Сначала Северин спросил, можно ли как-то снять галочку, поставленную напротив согласия с PD при регистрации. Ему быстро напомнили, что эта галочка — не юридически значимое согласие, а, скорее, опрос мнений. Не нужно делать второй аккаунт со снятой галочкой или писать пул-реквест в код сайта: твоё мнение и так ничего не решает.

Чтобы получить значимость, галочка должна сопровождаться длинным списком условий. Например, что пользователь обязуется не использовать источники не в общественном достоянии (такие как спутниковые снимки или открытые данные в РФ). И что он не основывает свои правки — по части геометрии или тегов — на данных других пользователей OSM, не отдающих свои правки в public domain.

Нельзя отрицать, что права на свой вклад готова отдавать значительная часть сообщества: по данным 2013 года, 44% редакторов с хотя бы одной правкой поставили эту галочку. 580 участников с личной страницей в нашей вики поставили на неё шаблон PD-user, который в более строгих терминах разрешает использовать их правки. Правда, людей в вики формально нельзя связать с редакторами в API. А эта галочка… Многие признают, что она выглядит как стандартная «правила не читал, но согласен», свойственная многим формам регистрации, поэтому люди нажимают на неё непроизвольно и не понимая, чем это может быть чревато.

Так что участники пришли к консенсусу: галочку нужно убрать из формы регистрации. Это не должно быть проблемой, потому что список поставивших её недоступен никому, кроме OSMF, и потому никто его не использовал. Фредерик послал официальный запрос в LWG. Участники уже начали заглядывать в код сайта, чтобы понять, насколько сложно будет вычистить оттуда public domain. И нашли там смешное.

Оказалось, что где-то между 2010 и 2015 годами значение галочки про public domain перестало сохраняться в базу данных. Мы не знаем, кто с тех пор был согласен, а кто нет. Команду сохранения случайно удалили во время добавления на сайт условий участия. Поскольку сайтом у нас заведует единоличный Том, никакого code review его коммита не было, строчка просто исчезла.

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

 1 комментарий   2019   odbl   osm.org

Здесь вам не двач

Неделю назад к заметкам на сайте OSM запретили добавлять анонимные комментарии. Это был самый популярный запрос на трекере сайта, открытый в 2017 году после нападения спамерских ботов на заметки в России. Год спустя Фредерик Рамм подготовил пул-реквест, и теперь, после очередного напоминания Фредерика, его код приняли.

OpenStreetMap начинался анонимно. До 2009 года, когда мы перешли на API 0.6, можно было дизассоциировать свой логин и правки. Никто бы никогда не узнал, что дорогу переименовал «москвич1812». Теперь все такие люди деанонимизированы, в базе больше нет объектов без указания пользователя. Анонимно можно править отдельные атрибуты в сторонних приложениях: например, в WheelMap исправления отсылаются от коллективного аккаунта wheelmap_visitor.

Сервис OpenStreetBugs, функции и база которого перешли в OSM в 2013 году, позволял анонимно сообщить об ошибках и комментировать эти сообщения. Понятно, почему нужны анонимные сообщения: это единственный способ улучшить карту без включения в сообщество и прочих тяжёлых обязанностей. Но в комментариях без авторства начали сомневаться уже через два месяца после ввода функции на сайте. Пользы от них немного, корректность не проверить, убрать невозможно.

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

Также, вчера на сайте рядом с тегами для цвета появились квадратики соответствующих цветов. Чтобы понять карту, всё меньше нужно быть роботом. Спасибо Стефану Баблеру и Энди Аллану.

2019   osm.org

Не только карта улиц, и не слишком открытая

OpenStreetMap — открытая карта улиц. Это назначение зашито в название проекта, потому что атласы всегда были для автомобилистов. Улицы, шоссе, грунтовки с подписями на фоне бледных лесов и городских районов. Лора Блисс в статье для CityLab вспоминает, как рассматривала атлас Лос-Анджелеса в детстве, когда водители считали за честь держать всю сетку улиц в голове и знать, как объехать пробку на магистрали, — и понимает, почему атласы уступили навигаторам.

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

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

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

Настольные карты тоже стремятся к утилитарности мобильных. Открой гугль — там белые дороги на светлом фоне, зато экран усыпан яркими булавками заведений: «кликни меня!» Карты яндекса красивее: дома, дворовые проезды, тропинки и велодорожки. Вроде как пёстро и интересно, но пяти минут достаточно, чтобы понять: эта карта тоже только для одной задачи: «проложи маршрут!» Невозможно уделять таким картам время, с ними нужно решить задачу и уйти.

Мне с детства нравится рассматривать карты. Следить за линиями и обозначениями и находить взаимосвязи. Но рассматривание карты ушло в прошлое вместе с атласами. Теперь печатные карты — лишь историческая ценность. Две коробки моего картографического архива спрятаны где-то в шкафу, толстые красивые атласы пылятся под потолком, карты из спинки автомобильного сиденья я не доставал лет пять. Всё устарело, стимула покупать новое нет: там то же самое, только на свежих данных.

Каждый год на конференциях State of the Map и FOSS4G устраивают конкурс плакатов. Кажется, вот оно: стой и рассматривай. Задерживаюсь у каждого на несколько минут — но это же не карты. Это либо исследовательские работы, поданные в форме плаката, с горой текста, несколькими графиками и парой простых обзорных карт. Либо художественные работы, которые не сколько рассматриваешь, сколько воспринимаешь. Да, встречаются красивые, «Pop Art» когда-то я утянул домой и не жалею об этом. Но карты — красивые, глубокие карты больше не вешают. Карта стала утилитарна; если она не выполняет предназначение, она не нужна.

Любопытные глаза теперь рассматривают спутниковые снимки. Присматриваются к контурам домов, прослеживают грунтовку через поля и леса. Находят правильные контуры военных объектов или деревню в глуши. Что это за пятно? Кто здесь живёт? Когда на одну точку есть шесть разных снимков, интересно их сравнить, посмотреть, как застраивался город или меняла русло речка. Снимки бесконечны как вширь, так и вглубь: всегда есть интересный район или история, которую открывают две спутниковые фотографии, разделённые десятилетием.

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

Казалось, вот два очевидных решения: люди смотрят на карточки — баннер же не помешает? И обвесили рекламой всё по периметру и немного внутри, чтобы пользоваться сайтом без адблока стало противно. И второе, наши редакторы же обводят снимки, а тут один шаг до классификации, чтобы получилась карта. Сделали — офигеть, карта начинает получаться, люди трассируют дороги и обводят населённые пункты. Вот только эти люди перестали уделять время тому, чем сайт был полезен: подписывать снимки, описывать спрятанные чудеса. Теперь они зачем-то дублируют работу, которую делают пользователи НЯК, OSM, Here. Делают недо-карту. Викимапия из уникального источника превратилась в никому не нужное подобие. Теперь на неё заходишь из жалости.

Рассматривать викимапию неприятно, а карты гугля, яндекса и подобных — бессмысленно. Атласы ушли в прошлое, а на спутниковых снимках можно что-то различить, но не понять. Получается, рассматривать нечего? Напротив: ответ был перед нами все пятнадцать лет.

Это OpenStreetMap. В отсутствие альтернатив OpenStreetMap стал главным атласом для рассматривания. Откроешь глагне  — и залипнуть в карту можно надолго. Не только дороги и дома: тропинки, болота, фонтаны и места для пикника. Именно поэтому когда-то люди возмущались, что railway=abandoned убирают со стандартного стиля: да, эти линии обозначают снятые рельсы, это не-объекты. Но когда смотришь на карту, они многое рассказывают об истории. Объясняют, почему там просека или тропинка. Интересная карта рассказывает историю, и сотни тысяч редакторов своими кусочками историй превращают OpenStreetMap в величайшую сказку на земле.

Опытные участники знают, что наша карта внутри гораздо больше, чем снаружи. Модель данных OSM со свободными форматами и бесконечными схемами тегирования подталкивает редакторов к слишком детальному картированию. Они указывают номера квартир в подъездах, виды деревьев в парке и напряжение в ЛЭП. Загружая кусочек города в JOSM, никогда не знаешь, какие мелочи заинтересовали местного картографа. То дороги окажутся усыпаны пожарными гидрантами, а то придётся ворочаться промеж отрисованных поребриков.

Карта богата внутри, но увидеть это богатство непросто. Раньше был набор из нескольких десятков визуализаций Ito Map: они показывали ограничения скорости, колеи железных дорог, освещённость, адресацию и кучу других атрибутов. К сожалению, в июле этот проект закрыли. У нас остались несколько тематических проектов типа OpenRailwayMap и Parking Lanes. Проблема с ними в том, что их не найти. Ссылки рассыпаны по случайным страницам нашей вики, сайты включаются и выключаются в произвольные моменты времени. Они не столько углубляют представление об OpenStreetMap, сколько бросают: «а вот ещё какая штучка у нас есть». Вместо единой шкатулки драгоценностей получилась сеть музеев одной брошки.

OpenStreetMap сродни карьеру, полному смыслов и геоданных. Чтобы в него углубиться, картостилей недостаточно, нужны более точные инструменты. Такие как Taginfo и Overpass API. Нашли интересный тег — запустили запрос, чтобы выкопать подобные объекты в своём районе — раскрасили и сделали себе тематическую карту. Подождали, пока лимит на плотность запросов отпустит, и продолжили раскопки. Скачали GeoJSON или подкрутили карту в редакторе. Очень увлекательно, это как править «матрицу», смотря на стекающие зелёные буковки. Только Level0 не хватает для комплекта. Думаю, лишь 400-500 человек на весь мир умеют смотреть так глубоко.

Нормальные люди приходят на наш сайт и рассматривают картостиль OSM Carto. Они не знают о «подводной части» базы данных — а ведь в ней самое интересное. Мы уже победили всех остальных по глубине карты, по её залипательности. Но чтобы усилить эффект, нужно что-то делать. Одно из двух. Либо, подобно немецкой глагне, заменить карту стеной текста со ссылками. Правда, с нашим мастерством принятия решений за результат может быть стыдно: вывесят туда ссылки на вики, на форум и на планету. Разбирайтесь, мол, сами. Второй выход — заменить тайлы в карте векторными.

Любой картографический стиль делит классы объектов на карте надвое: те, что он отображает и те, что прячет. Это нормально: чем продуманнее картостиль, тем короче его легенда. И это свойственно печатным картам. Но у нас на сайте интерактивная карта с бесконечным количеством атрибутов. Глупо отображать для всех одно и то же, по-барски позволяя включить аж четыре других стиля. Сколько атрибутов — столько картостилей. Нас спасут только векторные тайлы. Каждый посетитель должен получать свой собственный срез данных, чтобы посмотреть и офигеть от разнообразия. Мы обсуждали этот подход во время прошлого State of the Map, но, кажется, никто не понимает, что нужно делать.

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

Улиц недостаточно. Пробки сиюминутны и потому не нужны. Важна общая картина. Карта обучает, просвещает, помогает найти себя в мире. Проект OpenStreetMap способен рассказать о твоём городе или маршруте столько, сколько не снилось атласам. Осталось придумать, как разрушить статус-кво с картостилями и недо-векторными тайлами от Mapbox. Мы можем сделать лучше. Карта должна быть свободной.

Ранее Ctrl + ↓

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