Хакатон MAPS.ME

В середине июня команда MAPS.ME почти в полном составе ездила на хакатон. Не чей-то чужой, вроде хакатонов по открытым данным или по дата-журналистике, а внутренний. Как два и три года назад, мы на несколько дней покинули офис и семьи, чтобы сконцентрироваться на экспериментах в развитии приложения. День подготовки, три дня работы и выступление в конце.

Самая большая команда разработчиков, включая программистов под iOS и Android, набросилась на задачу UGC: добавить отзывы в карточки объектов. Кажется тривиальной задачей: мы видели отзывы и в специализированных приложениях, типа Foursquare, и в популярных онлайн-картах. Но приложение MAPS.ME хорошо не только дизайном, но и работой в отсутствие интернета. Как вы сделаете отзывы, когда нет сети?

В конце хакатона группа UGC показала звёздочки и смайлики для оценки заведений, но картинки не отразили масштаба работы. Разумеется, должны быть отзывы, и их нужно не только собирать в офлайне, но и показывать, то есть, хранить в файлах карт. Это требует лучших алгоритмов сжатия. Для ресторанов полезно спросить, понравилась ли еда, и какая именно, а для автомойки — качественно ли протёрли кузов и вежливо ли обошлись. Команда вручную просмотрела около 250 категорий объектов, выбрав для каждой признаки, которые могут быть интересны пользователям.

Поскольку внутренние идентификаторы объектов меняются с каждой сборкой карт, мы привяжем отзывы к идентификаторам OpenStreetMap. То есть, по сути, мы проектируем систему отзывов на объекты OSM — как давно мечтали некоторые наши участники. Прошлые попытки не вышли из статуса демонстраций для своих, а тут сразу будет аудитория из десятков миллионов пользователей. Наконец-то они будут писать «неплохая пицца» не в название ресторана, а в отзывы. Может быть, удастся договориться с руководством MAPS.ME об общей базе с другими приложениями на OSM.

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

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

  • Станции — на самом деле, это комплекс из платформы, точек, где останавливаются поезда, и станции как сущности. Нередко это четыре разных объекта, а то и больше. Схема общественного транспорта 2.0, при этом, забывает про точки railway=station в случае метро: это же не платформа и не остановка, дублировать нельзя. Это вообще не физические объекты! Мапперы иногда тоже о них забывают. А с отношением stop_area вообще получается тушите свет.
  • Линии — опять две сущности в одной. Это и пути, по которым движется поезд. Картографы очень любят их рисовать, потому что получается красиво, и считают их главной частью отношения маршрута. Увы, пользы от них ноль: важна линия как последовательность остановок, от первой до последней. И тут бардак. Причём, в России ещё нормально, пришлось править только московский МЦК, а в Лондоне многие линии почти не имеют станций.
  • Пересадки — их в OSM нет. Не в смысле, не нарисовали, а вообще: для пересадок нет схемы тегирования, никто даже не пытается их картировать. Иногда встречаются попытки смоделировать пересадки отношением stop_area, но лучше бы не пытались. Приходится определять пересадки по близости и затем удалять лишние рёбра.

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

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

В перерывах между работой мы купались, жарили шашлык и бургеры, катались на велосипедах (не всем удалось миновать охрану и поехать изучать окрестности реки Яхромы) и сегвеях. Когда садилось солнце, кто-то увлечённо пел караоке, кто-то, уединившись, смотрел фильмы ужасов. Удивлялись безальтернативному меню ресторана и в панике тушили угли, пока ураган не швырнул их в деревянный дом. По пути домой с трудом не выезжали на автобусные полосы: несмотря на дни работы среди коллег, сложно было поверить, что за окном не воскресенье, а середина рабочей недели.

Поделиться
Отправить
Запинить
23 июня   maps.me
7 комментариев
asd

Не совсем понятно: если отзывы привязываются к конкретному объекту в базе осм, то что будет, когда «Васян „удалит этот объект и нарисует рядом такойже, но чуть правее.

Илья Зверев

По-моему, очевидно: старые отзывы пропадут.

Сергей Михалыч

Здорово, что команда Maps.me понимает важность общественного транспорта. В Osmand есть отображение маршрутов городского транспорта (правда без роутинга), и это очень полезно для планирования маршрутов.
К стати, Яндекс разделяет приложения Яндекс.Карты и Яндекс.Транспорт (наверное в этом есть своя логика). Maps.me не будет так делать?

freeExec

Когда-то в далёкие-далёкие я думал над неким гибридом вроде transfer_area, где были-бы только платформы для пересадки. Но без действительно рабочего прототипа роутинга это не родить.

freeExec

По-моему, очевидно: старые отзывы пропадут.

Лучше же всё же завязываться на amenity_type + name (+ addr:*), а не просто на osm_id + version. А в случае изменения поискать в округе подходящий.

Илья Зверев

А что делать с торговыми центрами, где обновили список и расположения сотни магазинов обуви?

freeExec

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

asd

//По-моему, очевидно: старые отзывы пропадут.
Т. е. Ашоту не нравятся отзывы о его шаурмячной, он удаляет объект и рисует новый... профит!

freeExec

Не, профит, когда он свой подсовывает конкуренту, а себе выбирает с хорошими комментариями.