我有一组起点-终点坐标,我想计算它们之间的最短路径。
我的起点-终点坐标有时位于一条长直线路的中间。但是,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
- 选择距离最小的路径