繁体   English   中英

如何获得pgr_dijkstra灌浆中节点序列的距离?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM