2016-04-29 48 views
0

我想通過pgRouting使用pgr_dijkstra得到一個路由的總時間和距離,但我基本上不知道如何實現它。到目前爲止,我設法弄清楚,pgr_dijkstra的回報是以成本爲單位的,我總結了它們。我假設計算距離和時間實際上是按路線中的每個分段完成的。有人有如何做到這一點的例子嗎?如何計算距離和時間,使用pgRouting

SELECT SUM(cost) 
    FROM (SELECT cost 
     FROM pgr_dijkstra('SELECT u_gid as id, 
            u_source AS source, 
            u_target AS target, 
            cost AS cost, 
            reverse_cost 
           FROM ways', 78771, 26263, true, true)) AS r_cost; 

上面的語句給我所有的單位成本的總和......

回答

1

費用是不管你使用的成本值的時間或距離或。如果每個邊的成本是邊的長度,那麼成本就是距離。但是,如果將成本設置爲邊的遍歷時間,則成本就是時間。如果您花費邊緣的長度並且具有與每條邊相關的平均速度,那麼您可以將結果加回到邊緣表中以計算時間。

SELECT cost as distance, cost/speed as time 
     FROM pgr_dijkstra('SELECT u_gid as id, 
            u_source AS source, 
            u_target AS target, 
            cost AS cost, 
            reverse_cost 
           FROM ways', 78771, 26263, true, true)) a, 
     ways b, 
    where a.id=b.u_gid;