gpt4 book ai didi

networkx - 从起源于中间边缘的点计算最短路径

转载 作者:行者123 更新时间:2023-12-02 02:45:20 32 4
gpt4 key购买 nike

我有一组起点-终点坐标,我想计算它们之间的最短路径。

我的起点-终点坐标有时位于一条长直线道路的中间。但是,OSMnx/networkx 计算的最短路径不会考虑中间边到最近节点的路径。

OSMnx 或 networkx 中是否有现成的函数可用于查找起点/终点在道路中间的最短路径?

如果没有这个功能,我正在考虑使用下面的步骤。

  1. 获取起点和终点最近的边
  2. 获取最近边的节点:假设 (a,b) 为起点,(c,d) 为终点
  3. 计算 4 种可能组合的距离:a->c、a->d、b->c、b->d
  4. 将起点/终点投影到它们最近的边上:我们称它们为 o1 和 e1
  5. 计算距离o1->a,o1->b,e1->c,e1->d
  6. 将 (5) 距离添加到 (3): 得到
    • o1->a->c->e1
    • o1->a->d->e1
    • o1->b->c->e1
    • o1->b->d->e1
  7. 选择距离最小的路径

最佳答案

OSMnx 生成用于路由/分析的 networkx 图对象。正如您所注意到的,networkx 最短路径计算需要一个起点和一个终点节点,因此尝试从边缘中点计算最短图形路径是行不通的。

一些你可以尝试的事情:

  1. 在创建图形时尝试设置 simplify=False 以尽可能多地保留街道中间的节点。
  2. 如果这不起作用,您可以尝试将边(长度大于某个阈值)分割为 50 米或类似的 block ,以使用更多节点将它们离散化。

另请参阅:https://stackoverflow.com/a/55601732/7321942

关于networkx - 从起源于中间边缘的点计算最短路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55584841/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com