Вышел небольшой open-source построитель пешеходных маршрутов для людей с ограниченными возможностями.
Сразу ссылка на исходники: https://github.com/korifey/Smooth
Сейчас это организованно так:
Крутится это всё на Java сервере, в т.ч. алгоритм маршрутизации.
На первых этапах пришлось повозиться над оптимизацией, чтобы переварить карты размером с большой город и больше.
В качестве исходных данных используются актуальные дампы OpenStreetMaps, которые периодически обновляются.
Препятствия (высокие поребрики, ограждения и прочее) берутся у «Красивого Петербурга».
Так же авторам удалось получить данные по общественного транспорту — берутся они через API транспортного портала Санкт-Петербурга. Он не открыт, доступ предоставляется по заявке для определённого IP. Чтобы интегрировать их в систему необходимо очень серьёзно обработать и привести к нужному формату. Пока авторы работают над обеспечением ключевого функционала сервиса — прокладкой пеших маршрутов и обработкой сообщений о препятствиях.
Маршрут предоставляется в виде координат точек пути. Но вот одна из проблем: у точек пути нет типа, понять где остановка, а где просто точка поворота, например, можно только по косвенным признакам.
Другая проблема — направление. Ведь в отличие от тротуаров с узла-остановки можно двигаться только в одном направлении.
К сожалению, информация по тротуарам сегодня далеко не полная. Поэтому пока приложение строит маршрут по линии дорог, но с повышающим коэффициентом. Даже если путь через известный тротуар длиннее, будет использован он, а не проезжая часть.
Это, конечно, не оптимальное решение. Одна из важных задач, которая стоит перед создателями сервиса, — это найти человеко-ресурсы для нанесения тротуаров на карту OSM (авторы обещают подготовить инструкцию, следуя которой люди смогут помочь сервису и движению OpenStreetMap одновременно).
К слову — требуются волонтеры: при помощи редактора на сайте OSM наносить тротуары на карту. Со всей доступной информацией по этому тротуару.
Основные изменения сейчас происходят на фронт-энде. Хотя в ближайшее время и бэкенд тоже будет доработан для более качественного приёма препятствий.
В общем-то взять код и подложить карту другого города не составит большого труда, хотя сейчас в этом нет большого смысла, т.к. основной функционал пока дорабатывается.
Авторы и сами пробовали пользоваться своим сервисом. Иногда он плохо строит маршрут из-за незнания тротуаров. Но местами знает город лучше более серьёзных навигационных сервисов. Яркий пример — путь с Дворцовой площади на Большую Конюшенную улицу (Smooth строит маршрут через дворы Капеллы).
В коде местами всё достаточно сумбурно, но если есть понимание, как сделать лучше — присылайте ваши пуллреквесты!
Авторы проекта – Никита и Виталий Касьяновы, Дмитрий Иванов и Наталья Давыдова. Они представили свою идеюна хакатоне Open Data Hackathon 2014: Hack for Piter, который организовали Теплица социальных технологий, Фонд «Открытый город» и Университет ИТМО.
Комментарии (8)
alcanoid
11.06.2015 01:43+2Боюсь вас расстроить, но по дворам Капеллы приятно пройти пешком, а вот на коляске вряд ли проехать беспрепятственно получится.
kascode
11.06.2015 11:00+1Да, насквозь там проехать трудно. Но важно что мы, благодаря сообществу OSM, знаем о таких маршрутах. Ведь без знания путей любые знания препятствий бесполезны. Со знанием путей тоже не всё гладко. Покрытие тротуаров на карте OSM Санкт-Петербурга не полное даже в центре. Сейчас ищем добровольцев, которые помогли бы с отрисовкой пеших путей в городе.
vlivyur
11.06.2015 13:06А какие теги для тротуаров, проходов интересуют в первую очередь? wheelchair, width, smoothness — что ещё?
Ну и про центр Питера это вы загнули. В центре вообще всё плохо.kascode
11.06.2015 13:43В первую очередь важны теги surface, width, wheelchair_access. Но в последнем случае должно быть выполнено много условий для того чтобы поставить однозначное yes, поэтому если есть cомнения, то лучше ставить limited. Мы сейчас готовим туториал и рекомендации для тех, кто хочет помочь отрисовкой. Скоро выложим.
Kasheftin
11.06.2015 15:23Литовский идейный аналог — beslenksciu.lt. Здесь роутинг не так важен, потому что обычно нет проблемы с проездом на коляске. На stops.lt есть так же расписание транспорта, в том числе подходящего для инвалидов. Поэтому перемещение по городу — это не проблема, и суть be slenksciu не в роутинге, а в базе доступных для посещения объектов. Из статьи понял, что был написан свой роутинговый код, почему было не взять готовый?
kascode
11.06.2015 21:22Карты доступности POI существуют и в России. Объём и актуальность данных в них, к сожалению, часто оставляют желать лучшего. Да и проблему перемещения, которая у нас очень актуальна, они не решают. До доступного места ведь нужно как-то добраться.
Свою маршрутизацию писали в первую очередь из-за того, что это изначально был проект на хакатон Hack for Piter 2014. Мы знаем о таких проетах как OSRM или Graphhopper, следим за ними. Но в данный момент смена бэкенда не принесла бы большой пользы.
alltiptop
Для многих городов нашей необъятной проще поставить заглушку «лучше не выходить».