Как люди помогают технологиям в Яндекс Картах
На днях пользователи Яндекс Карт получили возможность актуализировать данные о доступности организаций. Например, можно указать, оборудован ли пандусом вход в парикмахерскую или есть ли в торговом центре специализированный туалет. Для начала мы попросили пешеходов Яндекса разметить первые 400 тысяч организаций в 73 городах.
Я Данис Гаязов из внутреннего сервиса Crowd, команды полевого краудсорсинга. Полевого, потому что мы работаем «в поле», то есть не в офисе. Сегодня по случаю запуска я расскажу, зачем Картам пешеходы и как они помогали и помогают делать сервисы более полезными.
Результат работы пешехода на заре проекта схем ТЦ
Согласитесь, во время поездки или прогулки неприятно уткнуться в шлагбаум, забор или любое другое препятствие, не обозначенное на карте. Как его обойти, чтобы не заплутать — понять сложно. Приходится двигаться наобум и терять время на поиски.
Чтобы такие ситуации происходили реже, а карты городов стали удобнее и ближе к реальности, сотни людей ежедневно ходят по улицам, аэропортам, ТЦ и вокзалам в своих городах. Мы называем их пешеходами.
Как в Картах появились пешеходы
Наша база организаций ежедневно пополняется и обновляется. Информация поступает разными способами: с помощью ML обработки данных с панорам и зеркал, с официальных сайтов, от пользователей Карт и от представителей самих компаний. Однако у многих организаций нет ни сайта, ни публично доступного телефона, ни геопривязки. Компания существует, но аудитория Карт о ней ничего не знает.
Отправлять сотрудников «в поля», чтобы они собрали нужные данные, было бы неправильно. Да и не во всех городах такое возможно. Однако сама идея полевых исследований показалась нам интересной, и мы решились на эксперимент.
Сначала мы несколько раз в год нанимали людей в разных городах, чтобы они проверяли информацию об организациях, которые есть на Картах. Но вскоре поняли: такие проверки должны быть регулярными, потому что данные быстро устаревают.
Весной 2017 года в Казани вышел на работу первый «пешеход»: человек, который в буквальном смысле слова пешком ходил к интересующим нас объектам и присылал требуемую информацию о них.
Первый пешеход в Казани
Эксперимент оказался удачным, и мы решили расширить штат полевых сотрудников. В апреле пешеходов стало трое, в мае — десять, а уже к концу года разнообразные задания выполняли две сотни пешеходов в разных городах. Быстрый рост произошёл из-за удобства формата и разнообразия открывшихся перед нами возможностей. Пешеходы помогли нам собирать не только сведения о компаниях в любом районе любого города, но и много других данных, включая картографические.
Почему это важно? Попробую объяснить. Вы наверняка понимаете, что для построения маршрута в Яндекс Картах сервису нужно знать сетку дорог. Для каждого типа маршрута — своя сетка. Автомобильный включает в себя все виды дорог — от внутриквартальных проездов до магистралей. А пешеходный — тротуары и тропинки, «зебры», лестницы, арки в зданиях, а также автомобильные дороги, доступные для пешеходов.
Нанести на карту все доступные пешеходам пути — непростая задача. Во-первых, их действительно много — только в окрестностях вашего дома, скорее всего, более десятка тропинок. Во-вторых, о большинстве из них, в отличие от автомобильных дорог, знают только местные жители. Как же тогда появляются эти тропинки на картах? Благодаря пешеходам. Они лично проходят эти маршруты, а потом наносят их на карту. Проходы сквозь дворы, дорожки в парках, тропинки — всё это добавляется в базу Карт и используется для построения маршрутов. Работа масштабная: только за первый год пешеходы прошли 130 тысяч километров.
Как работают пешеходы
Пешеходы мобильны: могут дойти до нужного места, чтобы получить интересующую нас информацию. Например, уточнить график работы организации, расположение входа, наличие пандуса, номер телефона вашей любимой кофейни или обувной мастерской.
Пешеходы — очень важные для нас помощники, поэтому мы не гоняем их по всему населённому пункту, чтобы собрать информацию. Города поделены на части: кварталы, микрорайоны, торговые центры. Каждый пешеход обходит свой участок, проверяя имеющиеся данные и добавляя новые.
На старте проекта работа была организована просто: пешеход посещал место и передавал нам информацию.
Изначально наш проект представлял собой большой geoJSON-файл, который хранился на сервере и содержал в себе геометрию всех заданий для обхода. Для управления этим файлом мы написали простую HTML-страницу, где можно было работать с полигонами: просматривать, создавать, изменять и удалять.
Но с ростом проекта мы поняли, что это решение не покрывает всех наших потребностей. Из основных проблем:
- Нестабильная работа. Наша инфраструктура на тот момент располагалась не в облаках, а на отдельной машине, которая иногда сбоила. Каждый такой сбой приводил к тому, что мы не могли вовремя назначить пешеходу полигон. Возникали простои в работе.
- Отсутствие многопользовательского режима. Веб-страница при загрузке скачивала geoJSON целиком, специалист выполнял в нём нужные операции и загружал обновлённый файл обратно на сервер. Если двое специалистов вносили изменения одновременно, то сохранялись только самые поздние.
- Жёсткая привязка инфраструктуры к конкретному сервису. Мы могли использовать этот инструмент только для Карт. Избавившись от такого ограничения, мы могли бы помочь любым сервисам, которым нужны данные об офлайне.
- Невозможность развиваться и добавлять новые функции. Архитектура не предполагала каких-либо изменений и каждый раз приходилось лепить «костыли», чтобы изменить хоть что-то.
Мы обратились за помощью к коллегам, которые помогают строить Толоку и другие инструменты для сбора оценок. Они за три месяца написали нам полноценный бэкенд с базой данных, удобный API для работы с ней и другие нужные функции (но полноценный фронтенд всё-таки пришлось делать самим). Когда MVP был готов, мы приступили к важному этапу, длившемуся не меньше полугода — интеграции в существовавшие процессы и полному переезду на новое серверное решение. Также добавили то, чего не было в предыдущей системе: многопользовательский доступ; чтобы координатор одного города не мог управлять и назначать полигоны в другом городе; поиск по полигонам и много других изменений. И в декабре 2019 года мы полностью закончили работу над новой системой.
От организаций к лавочкам и схемам ТЦ
После модернизации мы смогли эффективнее использовать возможности пешеходов, а заодно увеличили их количество. Сейчас пешеходы обходят вверенную им территорию, собирая данные. Они:
- Актуализируют информацию об организациях:
- Проставляют входы в организации.
- Делают фотографии фасадов.
- Уточняют названия, адреса, телефоны, сайты, время работы организаций.
- Собирают информацию о Wi-Fi, ИНН, ОГРН, меню, доступности городской среды для маломобильных людей.
- Добавляют отсутствующие организации со сбором всех перечисленных выше атрибутов, специализацией, а также датой открытия организации.
- Исправляют ошибки в имеющихся у нас адресных данных.
- Добавляют на карту заборы, шлагбаумы, лестницы, скамейки, пандусы и так далее.
- Собирают информацию о нумерации подъездов в жилых домах.
- Определяют зону видимости электронных билбордов.
Детализация карт помогает спланировать велопрогулку или оптимально рассчитать маршрут движения курьера. Благодаря пешеходам можно увидеть, как срезать путь и не наткнуться на огороженную территорию или шлагбаум. Кроме того, банально удобно знать, где в парке можно присесть на скамейку и в каких заведениях есть пандусы для родителей с колясками и людей на инвалидных колясках. С 2019-го мы стали показывать внутренние планы крупных ТЦ, вокзалов и аэропортов. Об этом стоит рассказать подробнее.
Отдельно про торговые центры
Сориентироваться внутри здания порой труднее, чем на улице, особенно если это многоэтажный торгово-развлекательный комплекс. Без схемы не обойтись.
Мы начали со схем 29 крупных торговых центров в Москве и ближайшем Подмосковье, а затем отправились в крупные ТЦ в городах-миллионниках. Пешеходы шли на объекты с распечатанными на бумаге поэтажными схемами зданий из Яндекс Карт. Они проверяли правильность расположения стен, организаций и разных объектов инфраструктуры — лифтов, туалетов, стоек информации. Обновленные схемы сканировали и передавали картографам для чистовой отрисовки.
Сейчас у нас есть подробные схемы около 1000 торговых центров, вокзалов и аэропортов. На них можно найти всё: от магазинов и ресторанов до стоек с газировкой. С помощью таких схем легко спланировать поход в ТЦ — не придётся гадать, на каком этаже искать нужный магазин или блуждать по галереям в поисках туалета.
Но согласитесь, когда схема рисуется от руки, это не очень похоже на технологичное решение Яндекса. Надо было что-то менять, и с этим «помогла» пандемия. Когда торговые центры по всей стране закрылись почти на три месяца, мы полностью переработали концепцию и разработали более совершенное решение: пешеходы получили возможность делать пометки об изменениях на карте в своих смартфонах. Эти пометки автоматически выгружаются в виде гипотез в Народную карту — сервис, позволяющий пользователям самостоятельно рисовать карты и уточнять их. Гипотезы проверяют, а потом добавляют пометки в базу данных Карт и наносят на схему здания.
Так процесс актуализации схем пошёл в разы быстрее. Сначала пешеходы обошли все крупные торговые центры, вокзалы и аэропорты в городах-миллионниках, а затем начали проходить все города, принося на Карты миллионы новых объектов из реального мира.
Как мы добились полноты и качества собираемых данных
Казалось бы, всё просто. Пешеходы записывают информацию и передают её нам, после обработки на Картах появляется новый объект. Но возникает вопрос контроля. Как определить, что пешеход действительно собрал всю информацию и ничего не придумал?
В крупных городах, где много пешеходов и заданий для них, мы могли контролировать качество поступающей информации, делая выборки и самостоятельно перепроверяя отдельные полигоны. В городах поменьше это невозможно: там работает 1–2 пешехода, и проверять каждого вручную — слишком сложно и долго.
Нужно было понять, как пешеходы обходят полигоны, что может стать метрикой качества и как её автоматизировать. Мы исходили из того, что необходимым условием хорошей полноты добавлений организаций является качественный и полный обход полигона.
Так появилась метрика «доходимости», которая считается на основе логов обхода территории. Доходимость — это соотношение двух площадей: участка полигона, который действительно обошёл пешеход, и того, который он должен был исследовать. Чем тщательнее пешеход прошёл свой участок карты, тем выше доходимость обхода.
В качестве исходных данных мы взяли информацию о перемещении пешеходов (во время обхода полигонов) из AppMetrica и геометрию домов из базы Карт. А полигоны замостили сеткой из квадратов, размер которых подобрали экспериментально.
В область, которую нужно было исследовать, попадают все квадраты с домами, так как пешеход должен обойти все дома полигона. В область, которую фактически обошёл пешеход, записываем все квадраты, на которые попали треки пешехода.
В итоге мы получили реальную информацию о том насколько тщательно пройдена вся территория. Теперь для городов без координатора используем эту метрику.
Помимо сбора данных мы готовим и визуализацию обхода каждого полигона на карте, что помогает при работе с пешеходами. Дополнительным плюсом новой метрики стала скорость получения обратной связи. Ведь ранее, чтобы увидеть полноту обхода, нам приходилось ждать результатов повторного обхода координатора.
Сейчас пешеходов уже несколько сотен в 80 городах и пяти странах. За четыре года работы они прошли сотни тысяч километров.
Мы активно работаем над повышением детализации Карт, привлекая новых пешеходов, развиваем и готовим новые проекты, уже далеко не всегда связанные со справочными данными и картами.