У меня есть набор координат отправления-назначения, которые я хочу рассчитать кратчайшие пути между ними.
Мои координаты отправления-назначения иногда находятся в середине длинной прямой дороги. Однако кратчайший путь, рассчитанный OSMnx / networkx, не учитывает этот путь от середины до ближайшего узла.
Есть ли какая-либо готовая функция в OSMnx или networkx, которую я могу использовать, чтобы найти кратчайший путь, который начинается / заканчивается в середине пути?
Если такой функции нет, я думаю о следующих шагах.
- Получить ближайшие края отправления и назначения
- Получить узлы этих ближайших ребер: скажем, (a, b) для источника и (c, d) для пункта назначения
- Рассчитать расстояние до 4 возможных комбинаций: a-> c, a-> d, b-> c, b-> d
- Проецируйте источник / пункт назначения на их ближайшие ребра: назовем их o1 и e1
- Рассчитать расстояние o1-> a, o1-> b, e1-> c, e1-> d
- Добавить (5) расстояние до (3): получить
- o1-> a-> c-> e1
- o1-> a-> d-> e1
- o1-> b-> c-> e1
- o1-> b-> d-> e1
- Выберите путь с наименьшим расстоянием