gpt4 book ai didi

mysql - 如何获取 pgr_dijkstra pgrouting 中节点序列的距离?

转载 作者:行者123 更新时间:2023-11-29 13:44:38 31 4
gpt4 key购买 nike

我有一个整数数组(节点或目的地),即需要按给定顺序访问的数组 [2,3,4,5,6,8]。我想要的是,使用 pgr_dijkstra 获得最短距离。但是 pgr_dijkstra 找到了两点的最短路径,因此我需要使用 pgr_dijkstra 找到每对的距离并将所有距离相加以获得总距离。这对会像
2,3
3,4

4,5

5,6

6,8。有什么方法可以定义一个接受这个数组并使用 pgr_dijkstra 找到最短路径的函数。

查询是:对于第一对 (2,3)SELECT * FROM pgr_dijkstra('SELECT gid as id,source, target, rcost_len AS cost FROM finalroads',2,3, false);

第二对 (3,4)SELECT * FROM pgr_dijkstra('SELECT gid 作为 id,source, target, rcost_len AS cost FROM finalroads'***,3,4,*** false)

第三对 (4,5)SELECT * FROM pgr_dijkstra('SELECT gid as id,source, target, rcost_len AS cost FROM finalroads'***,4,5,*** false);

注意:数组大小不固定,可以不同。

有什么方法可以在 postgres 中自动执行此操作 sql 可能正在使用循环等?请让我知道该怎么做。谢谢。

最佳答案

使用此 post 中提供的解决方案使用源,可以使用您的数组。请注意,orig 是您的数组,省略了最后一个条目,dest 省略了第一个条目。

SELECT 
source,
target,
(SELECT SUM(cost) FROM -- or whatever you want to do with the routing result
(SELECT *
FROM pgr_dijkstra('SELECT gid as id,source, target, rcost_len AS cost FROM finalroads',
orig,
dest,
false))
) AS foo
) AS cost
FROM (
select unnest(myarray[:array_upper(myarray,1)-1]) as orig,
unnest(myarray[2:]) as dest
from (select array[1,2,3,4] myarray) b) c;

关于mysql - 如何获取 pgr_dijkstra pgrouting 中节点序列的距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50429760/

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