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