Скованные одним слоем

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

Клубок данных

Шесть лет назад слои были у всех на устах. «Какие слои в вашем проекте закончены?» — спрашивали на конференциях. «Рано или поздно придётся внести понятие слоёв», — комментировали в штосме. И вот мы в 2018, как успехи в этом направлении?

У нас были сайт Ito Map и панель фильтров в JOSM: ввела highway=* и получила слой дорог и связанных с ними POI. Теперь к ним добавились тематические сайты на основе Overpass API — например, редакторы полос от Almaz. Это круто, конечно, но не решает общую проблему OpenStreetMap.

Проблема с нашими данными в том, что они неделимы. Это хуже, чем топология (когда объекты собираются из частей): связи в данных невероятно прочны и непредсказуемы. Точка лежачего полицейского в составе линии дороги, территория школы и забор вокруг неё в одном объекте, остров-лес... Мрак для человека, всю жизнь работавшего с шейпфайлами. Добавим сюда отношения с сотнями автобусных маршрутов поверх одних и тех же дорог, административные границы по рекам и прочие радости типа type=person — и трогать данные становится страшновато.

Спрятать лишнее фильтрами? Не только потеряем некоторые сильные связи (см. границы по дорогам), но и наткнёмся на распространённые слабые связи: когда кажется, что объекты не связаны, но их взаимное расположение или общие элементы важны. Например, многие проспекты разбиты на сегменты, которые объединяет только тег name (да и то не всегда). Магазины нередко находятся внутри здания с shop=mall (или без этого тега, но с названием вида «ТЦ Скрытный»). Как узнать адрес кафе? Ищете дом, содержащий кафе, затем точку с адресом, лежащую внутри контура дома, ближайшую к кафе.

Зато модель данных простая!

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

Справочник

Мы хотим, чтобы наша карта работала в качестве справочника заведений, и в этом не уступала коммерческим альтернативам — от странного Here до агрессивного 2ГИС. Разве не за этим вы старательно вводите часы работы магазина во время стоянки в путешествии? Не для этого удаляете с карты закрытое кафе по пути на работу? Как приятно в незнакомом городе найти хорошее кафе или неочевидную детскую площадку в OsmAnd! Сразу чувствуешь, что картографы-любители работают не зря.

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

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

Естественная реакция на подобную задачу — выделить слой справочника в отдельный проект. Тоже открытые данные, но с более жёстким классификатором и более дружелюбный к организациям и импортам. Перенести все POI из OpenStreetMap и установить правило: справочник → там. Короче, предложить OpenCorporates двухсторонний обмен информацией.

Разумеется, это не сработает: OpenCorporates — это коммерческая компания, а одно из главных достоинств OSM — что наши данные ни от кого не зависят. Как и другие достоинства, с другого ракурса оно скорее походит на недостаток. Но чинить, что не сломано, — не наша задача. Поэтому наш справочник — это OpenStreetMap. У нас есть база заведений, мы умеем отделять её от других данных. Насколько эта база хороша?

Доверия к заведениям в OSM нет даже у опытных осмеров. От моего дома до ближайшего неотмеченного на карте заведения двести метров. Уверен, это расстояние не превысит полукилометра для значительной части активных редакторов. Когда нужно найти кафе, я открываю foursquare, когда ищу автосервис — карты яндекса. Чем больше POI на карте, тем меньше уверенности в их актуальности. Точки вполне могли нарисовать несколько лет назад. А когда фрагмент карты выглядит относительно полным, осмеры перестают его замечать. Наши инструменты не делают удобным обновление данных. Приятно отметить новый магазин. Удалить закрытый сложно.

Будущее

«Участвовать в проекте легко — достаточно зарегистрироваться и нажать кнопку „Правка“». Нажимаем, видим мешанину как на рисунке ниже. Как здесь найти магазин, который нужно поправить, или как тыкнуть в парк, чтобы его обвести, или как проложить тротуар и не зацепить ничего лишнего? Любой опытный осмер, запомнивший, какой кнопкой расцеплять линии, ответит, что это почти невозможно. И мы даже не упоминаем отношения. Постепенно территории, где опасно орудовать в iD и неудобно в JOSM, расширяются. Когда-нибудь такой плотной станет вся карта — и это не будет поводом для радости.

Могли бы помочь автофильтры, вот только за полтора года мы не увидели работ в этом направлении. Да и нынешние их воплощения не сильно отличаются от обычных фильтров, проблема которых описана выше. Нет, дополнительной функциональностью существующие редакторы не поправишь. Пора признать, что в OpenStreetMap у стандартного подхода «скачать всё и потом редактировать» нет будущего. Ни JOSM, ни iD, ни Vespucci, ни Go Map не посоветуют новичкам через десять лет.

Что же посоветуют? Другие редакторы, эксперименты в которых мы видим в последние годы. Прежде всего, это Maps.Me и StreetComplete. Несмотря на технические недостатки, ими пользуются десятки тысяч пользователей. Их особенность — они тематические. Не пытаясь обрабатывать весь клубок данных, они вытаскивают и пришивают только интересные им ниточки: POI и дополнительные атрибуты. Пользоваться ими легко, и для работы с этими слоями даже опытные осмеры предпочитают достать телефон, а не запускать редактор на компьютере.

Именно это и произойдёт в будущем: редакторы всё-в-одном расслоятся на низкоуровневые, типа Level0, и тематические. На мобильных устройствах последние уже победили, теперь дело за настольными редакторами. Вдохновляющие заметки о первых попытках их сделать только начинают появляться в ленте. Например, Deriviste от Ричарда: простая (и очень сырая) страничка с фотографией из Mapillary, картой и поиском по заготовкам тегов. Дважды кликаешь на магазин на фотографии, корректируешь его расположение, вводишь «фрукты» и идёшь дальше. Обработка фотографий из картографической прогулки раньше была невыносимо сложной, а теперь это игра. Гениально.

Пока что у нас нет ни единого законченного тематического редактора, которым хотелось бы пользоваться вместо обычных. Близки к таким редакторы полос, упомянутые выше. Может, ещё Conflation Audit для подтверждения изменений при импортах POI. Логичным развитием его будет помощь при загрузке любых пакетных точечных данных — так что видя страницу магазина с пятью адресами, захочется открыть этот редактор, а не JOSM или iD, потому что он удобнее и гарантирует обновление данных, когда обновится сайт.

Чудесные тематические редакторы будущего обойдут все проблемы, которые описаны ранее:

  • Они очевидным образом решают вопрос слоёв, работая только со срезом данных. Например, вы указываете автобусные остановки по маршруту, а редактор сам прокладывает маршрут по ближайшим улицам и после проверки правильно разрезает их и собирает отношения route. Связи между слоями станут не случайными, а осмысленными и одобренными пользователем.
  • Они автоматизируют редактирование: заботы об обновлении данных лягут не на супер-картографов, коих сейчас один человек на миллион жителей, а на машину. Она сама скачает данные из того же источника и сама напомнит, когда ваш вклад начнёт выглядеть устаревшим. Хранение жизненного цикла внутри OSM не работает, в отличие от сторонних сервисов, которые знают, что делать со всеми этими датами.
  • Они дают уверенность в качестве данных, потому что валидируют не только геометрическую и техническую корректность, но и источник, и взаимосвязь объектов внутри темы, и возраст данных. Импорты станут умнее, потому что у импортированных объектов будет история. Авторы редакторов будут писать валидаторы не вширь, как в JOSM, а вглубь, находя новые неочевидные способы убедиться в правильности изменений.

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

Дело за малым: придумать и написать. Авторы потенциальных редакторов-хитов должны не только хорошо разбираться в OpenStreetMap и уметь программировать, но и иметь опыт в проектировании хорошего UX. Знать все примеры хорошего пользовательского дизайна в картографии: сайта Moovit, редактора запретов поворотов в iD, алгоримов модерации, интерфейса «народных карт»... Да, подвох тут очевиден. Продолжение следует.

Поделиться
Отправить
Запинить

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

6 комментариев
Sergey Karavay 2018

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

GPMapper 2018

К сожалению почти все что упомянуто в данной статье — правда. OSM не сможет быть конкурентоспособной без значительного реформирования своей структуры. Очень жаль что нет однозначного понимания направлений этих перемен...

Kilkenni 2018

«Разумеется, это не сработает: OpenCorporates — это коммерческая компания, а одно из главных достоинств OSM — что наши данные ни от кого не зависят.»

Если бы это было так, мы бы вообще отказывались от импортов. Любые данные зависят от источника.
Достоинство OSM — не независимость данных от источников, а независимость массива данных от диктата одной компании-владельца. Я не вижу причин НЕ сотрудничать с компаниями — для прогресса это необходимо. Но на управленческие и организационные решения они должны влиять на правах обычных пользователей.

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

Kilkenni 2018

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

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

bopoh13 2018

Илья, а что случилось с подложкой «Карты смещений»?

Илья Зверев 2018

Не знаю, у меня работает (Firefox / Mac). А что у тебя?

bopoh13 2018

Илья, нашёл проблему. Не работает в FF без фингерпринта, подложку грузит только с <code>privacy.resistFingerprinting=false</code>

Популярное