【问题标题】:pgr_drivingDistance with flexible distance value on each routepgr_drivingDistance 在每条路线上具有灵活的距离值
【发布时间】:2019-06-27 07:32:23
【问题描述】:

我想使用 pgsql 计算类似于等时线的图。因此,我已经使用了算法pgr_drivingDistance。您提供起点和距离值并接收等时线。

The output using the algorithm 收到的代码类似于:

SELECT * FROM pgr_drivingDistance(
        'SELECT id, source, target, cost FROM edge_table',
        2, 2, false -- starting point, distance, directed
      );

红星代表起点。

现在,我想要一个以相同方式工作的图表,例如从一个点开始并获取所有方向的路线。不同之处在于,我不想提供行驶距离,而是提供位于道路网络上的点坐标列表。每个方向的路线都必须停在每条路线上的第一个到达点。每条路线的距离都不一样,不知道哪个点最近。

The desired output using the "stopping" points, which are visualized in green, is supposed to look like this.

我已经试过了:

  • 使用给定的算法 pgr_drivingDistance 并在每次未到达任何点时提高距离值 -> 此处的问题:所有方向的距离都相等,而不是每条路线的距离都相同。
  • 对每条路线使用算法pgr_dijkstra -> 这里的问题:因为你不知道哪个点受到影响,所以你不知道选择哪个端点进行计算。您也不能选择最近的路线,因为您需要特定路线上最近的路线。

我知道我必须构建一个几乎完整的新算法,但也许有人知道如何开始甚至体验此类问题。

提前谢谢你!

【问题讨论】:

    标签: postgresql algorithm postgis pgrouting


    【解决方案1】:

    这是一个一对多的路由问题。您必须计算到每个端点的路线才能找到最短的那个。我最近没有看过 pgRouting 函数,但我相信有一对多、多对一和多对多的 Dijkstra 函数。您应该能够使用一对多来一次性计算所有路线,然后您可以根据长度对路线进行排序以找到最短的路线。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-20
      • 2021-01-03
      • 2019-10-31
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      • 2017-03-11
      • 1970-01-01
      相关资源
      最近更新 更多