[英]how to get the distance of sequence of nodes in pgr_dijkstra pgrouting?
我有一个整数数组(节点或目标),即需要按给定序列访问的array [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 as 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中使用循环等? 请让我知道该怎么做。 谢谢。
使用此提供的解决方案后 ,使得使用源表的,可以使用您的阵列。 请注意, 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;
如果您希望所有对都保持距离,请使用
select * from pgr_apspJohnson('SELECT gid as id,source,target,rcost_len AS cost from finalroads)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.