Вышел небольшой open-source построитель пешеходных маршрутов для людей с ограниченными возможностями.
Сразу ссылка на исходники: https://github.com/korifey/Smooth
Сейчас это организованно так:
Крутится это всё на Java сервере, в т.ч. алгоритм маршрутизации.
На первых этапах пришлось повозиться над оптимизацией, чтобы переварить карты размером с большой город и больше.
В качестве исходных данных используются актуальные дампы OpenStreetMaps, которые периодически обновляются.
Препятствия (высокие поребрики, ограждения и прочее) берутся у «Красивого Петербурга».
Так же авторам удалось получить данные по общественного транспорту — берутся они через API транспортного портала Санкт-Петербурга. Он не открыт, доступ предоставляется по заявке для определённого IP. Чтобы интегрировать их в систему необходимо очень серьёзно обработать и привести к нужному формату. Пока авторы работают над обеспечением ключевого функционала сервиса — прокладкой пеших маршрутов и обработкой сообщений о препятствиях.
Маршрут предоставляется в виде координат точек пути. Но вот одна из проблем: у точек пути нет типа, понять где остановка, а где просто точка поворота, например, можно только по косвенным признакам.
Другая проблема — направление. Ведь в отличие от тротуаров с узла-остановки можно двигаться только в одном направлении.
К сожалению, информация по тротуарам сегодня далеко не полная. Поэтому пока приложение строит маршрут по линии дорог, но с повышающим коэффициентом. Даже если путь через известный тротуар длиннее, будет использован он, а не проезжая часть.
Это, конечно, не оптимальное решение. Одна из важных задач, которая стоит перед создателями сервиса, — это найти человеко-ресурсы для нанесения тротуаров на карту OSM (авторы обещают подготовить инструкцию, следуя которой люди смогут помочь сервису и движению OpenStreetMap одновременно).
К слову — требуются волонтеры: при помощи редактора на сайте OSM наносить тротуары на карту. Со всей доступной информацией по этому тротуару.
Основные изменения сейчас происходят на фронт-энде. Хотя в ближайшее время и бэкенд тоже будет доработан для более качественного приёма препятствий.
В общем-то взять код и подложить карту другого города не составит большого труда, хотя сейчас в этом нет большого смысла, т.к. основной функционал пока дорабатывается.
Авторы и сами пробовали пользоваться своим сервисом. Иногда он плохо строит маршрут из-за незнания тротуаров. Но местами знает город лучше более серьёзных навигационных сервисов. Яркий пример — путь с Дворцовой площади на Большую Конюшенную улицу (Smooth строит маршрут через дворы Капеллы).
В коде местами всё достаточно сумбурно, но если есть понимание, как сделать лучше — присылайте ваши пуллреквесты!
Авторы проекта – Никита и Виталий Касьяновы, Дмитрий Иванов и Наталья Давыдова. Они представили свою идеюна хакатоне Open Data Hackathon 2014: Hack for Piter, который организовали Теплица социальных технологий, Фонд «Открытый город» и Университет ИТМО.
Автор: gsuvorov