postgresql - pgr_drivingDistance 在每条路线上具有灵活的距离值

标签 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对于每条路线 -> 这里的问题:因为你不知道哪个点受到影响,你不知道选择哪个终点进行计算。您也不能选择附近最近的一个,因为您需要特定路线上最近的一个。

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

提前致谢!

最佳答案

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

关于postgresql - pgr_drivingDistance 在每条路线上具有灵活的距离值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56786122/

相关文章:

postgresql - PostGIS 路口故障排除

postgresql - 如何将点文本转换为几何图形

ruby-on-rails - 无法使用带 Rails 的 PostgreSql 创建数据库

postgresql - 在没有单独的开始和结束字段的情况下检查时间范围是否在 PostgreSQL 中重叠

c++ - 如何在图中找到所有前向和交叉边

c++ - 为什么我的斐波那契动态规划没有给出线性时间?

php - 如何在 PHP 中将 3 个或更多 ID 合并为 1 个 64 位 ID

sql - 返回按条件按其他 2 个列排序的列

sql - Postgres 中的快速近似计数

postgresql - 使用 NetTopologySuite 与 EF Core 和 postgis 计算两点之间的地理距离