pgr_drivingDistance,每条路线上的距离值灵活

时间:2019-06-27 07:32:23

标签: postgresql algorithm postgis pgrouting

我想使用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->这里的问题:因为您不知道受影响的点,所以也不知道选择哪个端点进行计算。您也不能在附近采取最接近的路线,因为您需要在特定路线上最接近的路线。

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

提前谢谢!

1 个答案:

答案 0 :(得分:0)

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