首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在pgr_dijkstra预组中获得节点序列的距离?

如何在pgr_dijkstra预组中获得节点序列的距离?
EN

Stack Overflow用户
提问于 2018-05-20 05:46:48
回答 2查看 663关注 0票数 1

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

2,3

3,4

4,5

5,6

6,8。有没有办法定义一个函数,它接受这个数组,并使用pgr_dijkstra找到最短路径。

查询为:第1对(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可能使用循环等?请告诉我怎么做。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-20 09:06:38

注意,orig是您的数组,省略了最后一项,而dest省略了第一项。

代码语言:javascript
复制
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;
票数 0
EN

Stack Overflow用户

发布于 2018-07-04 03:20:59

如果您想要所有对的距离,那么使用

select * from pgr_apspJohnson ('SELECT gid as id,source,target,rcost_len AS cost FROM finalroads)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50429760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档