簡體   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