Сервисы роутинга с делением на геозоны

Здравствуйте! Имеется задачи построить сервис маршрутизации для решения следующих задач:

  • добавление пользовательской геозоны ( например, границы города)
  • получение информации о маршруте (хотя бы протяженности) по нескольким координатам, с делением протяженности по геозоне и вне геозоны.
    Почитал обо всех, подходящих под наши задачи для простого роутинга, проектах, но ни в одном такого не нашел. Может быть, кто-нибудь поделиться краткими мыслями (теорией) о том, как это реализовать? Заранее спасибо!

В Москве хотите маршрутизацию с учетом возможности въезда в кольца считать?

Собсно, задачу можно разделить на несколько:

  1. Выбор алгоритма маршрутизации/готовой библиотеки

  2. Формирование графа из данных OSM под выбранный алгоритм/библиотеку

  3. Классификация рёбер графа по вашим геозонам

  4. Прокладка маршрута по графу (получение списка рёбер)

  5. Получение итоговой информации из маршрутов

Для задачи классификации можно использовать osmosis с плагином osmareatag: https://forum.openstreetmap.org/viewtopic.php?id=58978
С формированием графа (с учётом иерархии и связанности) может помочь другой плагин: https://github.com/sergeyastakhov/OSM/tree/master/osmrouting

Остальное вам придётся делать самому, но будет максимальная гибкость (например можно будет выполнять прокладку маршрута с учётом желательности/нежелательности заезда в ваши геозоны).

Если же хочется минимизировать кол-во программирования, а учитывать зоны в прокладке не нужно, можно ещё пойти другим путём - получить линию маршрута при помощи любого подходящего сервиса маршрутизации, а затем заняться её классификацией (разбить линию маршрута на участки внутри/вне этих геозон), это можно сделать при помощи любой из библиотек геометрических функций (типа JTS на Java).

Да нет, не Москва, некоторые города ЦФО. Если интересно, то типа софт для такси. Чтоб можно было делить поездку на город/загород.

Ой, огромное Вам спасибо за такой развернутый ответ!