Что это такое и как работает

Проект основан на идее, что достойные внимания объекты можно найти практически в любой части почти каждого города. Это не обязательно должны быть императорские дворцы или скульптуры Монферрана в историческом центре – в «спальных» районах могут находиться небольшие военные памятники, красивые церкви, произведения ландшафтного дизайна, высокохудожественные граффити, шедевры индустриальной архитектуры и многое другое. И очень часто пешеход не замечает этих объектов, потому что они могут находиться немного поодаль от самого короткого пути до пункта назначения. Алгоритм Егора Смирнова работает так, что если на самом коротком маршруте нет интересных видов, то он предлагает пользователю пройти лишние метры, чтобы сделать прогулку более увлекательной.

Иными словами, сервис предлагает не кратчайшие, а более интересные маршруты. При этом пользователь может настроить, насколько он готов отклониться от самого короткого пути в пользу его необычности. Например, задаем маршрут в отдаленном «спальном» районе Петербурга: «Суздальский проспект, 109 – метро «Академическая» с максимальной настройкой по интересности маршрута. Сервис предлагает отклониться от самого короткого пути на 16%, но при этом увидеть памятник учителю, который не попадается на пути, если настроить алгоритм на поиск самого короткого маршрута. Так, пешеход сам может решить, стоит ли ему отклоняться от короткого маршрута, чтобы увидеть эту достопримечательность.

Сейчас пользоваться сервисом SightSafari.City можно в Санкт-Петербурге, в Москве в пределах Третьего транспортного кольца, в Уфе, Калининграде, Нижнем Новгороде, Киеве, Казани, Ростове-на-Дону, Благовещенске, Саратове, Пензе, Одессе, Минске и Екатеринбурге. При подключении новых городов менять в самом алгоритме ничего не нужно.

Маршрут «Суздальский проспект, 109 – метро
Маршрут «Суздальский проспект, 109 – метро "Академическая"». Источник: sightsafari.city

Какие инструменты используются и как происходит подбор маршрута

Алгоритм работает на базе Open Street Map (OSM). OSM – это открытая онлайн-карта, которая редактируется самими пользователями. Они классифицируют разные объекты по тегам, присваивая им определенные значения. Например, все пышные дворцы Санкт-Петербурга часто удостаиваются тега historic. Если речь идет о дорогах, то можно задать теги primary (используется для крупных автодорог регионального значения), pedestrian (для пешеходных улиц) и так далее. Таким образом, OSM – это картографический аналог «Википедии», где каждый может внести свои коррективы, создать новый объект на карте. Также для создания своего алгоритма Егор Смирнов пользовался библиотекой для поиска кратчайших путей GraphHopper, которая также работает с OSM-картами.

При построении маршрутов SightSafari.City анализирует «вес» разных тегов объектов, которые находятся на пути. Во-первых, для включения в маршрут выбираются объекты из таких категори, как туристические достопримечательности с тегом tourism; зеленые зоны, водоемы, исторические здания с тегом historic, объекты с тегом amenity, то есть что-то, представляющее эстетическую красоту, а также объекты с тегом пешеходных улиц и площадей. Алгоритм не анализирует библиотеки, культурные центры, театры, потому что очень часто эстетическая привлекательность есть только внутри таких зданий. Во-вторых, все эти объекты сами по себе обрастают «весовыми» значениями. Например, +3 «очка» получают все теги в описании объекта, которые ведут на странички объектов в «Википедии» или «Викиданных», +1 «очко» присуждается за наличие ссылки на сайт, +1 – за тег name (если у объекта есть имя, значит, оно представляет какую-то важность) и другие «очки». Благодаря расстановке таких «очков» алгоритм определяет интересность объекта: так, если он получает 0-3 балла, то это, скорее всего, некоторый местный объект типа граффити, а если 8-10 баллов, то это уже что-то, по статусу похожее на Дворцовый мост.

Маршрут, построенный с помощью Яндекс.Карты. Источник: habr.com
Маршрут, построенный с помощью Яндекс.Карты. Источник: habr.com

В-третьих, алгоритм строит маршрут с учетом посещения видовых точек, то есть мест, с которых можно хотя бы издали посмотреть на какую-либо достопримечательность или увидеть ее часть. Например, Исаакиевский собор или Адмиралтейство отлично видно с набережной на Васильевском острове, поэтому, если задать маршрут «Кадетская линия, 1 – Стрелка Васильевского острова», то сервис в списке достопримечательностей на пути выделит и Адмиралтейство, хотя оно на другом берегу Невы. В то же время есть интересные памятники архитектуры, которые как бы «зажаты» другими зданиями, и с улиц открывается лишь частичный вид на них – таких видовых точек много на Невском проспекте. Алгоритм также учитывает эти точки.

Какие есть проблемы

Самая главная проблема, скорее даже особенность, в том, что, когда пользователи OSM добавляют разные объемы на карте, они зачастую неправильно выбирают теги. Среди типичных ошибок в своем посте «Гайд по исправлению ошибок в OSM» Егор Смирнов выделяет: неправильное обозначение дорог (из-за этого какие-либо удобные пешеходные дороги могут быть приняты SightSafari за проезжие или наоборот), неправильное обозначение открытых или закрытых проходов через дворы (из-за чего пользователь SightSafari.City может наткнуться на закрытые ворота на своем маршруте).

Бывает так, что построенный маршрут в итоге все равно получается скучным, потому что между начальной и конечной точками нет никаких достопримечательностей. Характерно это, в первую очередь, для окраин, но и в центре есть такие места, подчеркнул Егор Смирнов. Поэтому порой приходится в ручном режиме искать интересные объекты в таких районах и включать их в карты OSM с нужными тегами.

Тот же маршрут, что и на картинке выше, построенный с помощью SightSafari.City. Источник: habr.com
Тот же маршрут, что и на картинке выше, построенный с помощью SightSafari.City. Источник: habr.com

Также иногда может показаться, что SightSafari.City упорно игнорирует какую-либо достопримечательность, о которой вы знаете, но которая не выпадает в списке интересных объектов на вашем пути. Это значит, что у объекта, возможно, не проставлены такие теги, как name, ему не присвоен статус historic и другие важные для набора «очков» теги. Именно поэтому разработчику проекта иногда приходится вручную менять те или иные теги в OSM, чтобы делать разные маршруты более интересными.

«Я выбрал карты OSM, потому что это практически единственный открытый и бесплатный источник картографических данных. Все остальные карты типа Google или “Яндекс”, запрещают использовать свои данные в чужих проектах. Я могу интегрировать SightSafari в другие сервисы с помощью API», – прокомментировал Егор Смирнов.

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

Егор Смирнов
Егор Смирнов

«Есть оффлайн-карты и навигаторы например maps.me. В итоге человек может скачать с сайта построенный маршрут в одном из популярных форматов, например, KML, затем загрузить его в навигатор и идти по нему, уже даже не имея доступа к интернету и самому сайту. Возможность загрузки, конечно, зависит от самого приложения. Но популярные бесплатные оффлайн-карты это поддерживают», – пояснил разработчик проекта.

Первые пользователи SightSafari.City также отметили, что было бы здорово создавать кольцевые маршруты, альтернативные пути для уже пройденных маршрутов, а также случайные маршруты, если человек просто хочет прогуляться в каком-либо районе, но не знает, куда именно пойти. Кроме того, в сервисе пока нет фотографий различных достопримечательностей, потому что это требует больших ресурсов для работы с проектом.

«Сервис еще находится в разработке, многое еще надо сделать и добавить, требуется более тонкая настройка самого алгоритма. Однако пользоваться можно уже сейчас, и, судя по отзывам, работает он довольно неплохо. В дальнейшем планируется добавить виды маршрутов, Android-приложение, больше городов», – сказал Егор Смирнов.