У меня есть набор координат исходной и конечной точек, по которым я хочу рассчитать кратчайшие пути между ними.
Мои координаты пункта отправления и пункта назначения иногда располагаются посреди длинной прямой дороги. Однако кратчайший путь, вычисленный 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
- Add (5) distance to (3): to get
- o1->a->c->e1
- o1->a->d->e1
- o1->b->c->e1
- o1->b->d->e1
- Выберите путь с наименьшим расстоянием