如何使用pgRouting计算距离和时间

时间:2016-04-29 12:56:24

标签: postgresql postgis pgrouting

我试图使用pgr_dijkstra在pgRouting中获取路由的总时间和距离,但我基本上不知道如何实现它。到目前为止,我设法弄清楚pgr_dijkstra的回报是以成本单位为单位,我总结了它们。我假设计算距离和时间实际上是在路线中的每个段完成的。有人有一个如何做到这一点的例子吗?

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 个答案:

答案 0 :(得分:2)

成本是时间或距离或您用于成本值的任何内容。如果每条边上的成本是边的长度,那么成本就是距离。但是,如果您将成本设置为边缘的遍历时间,那么成本就是时间。如果你花费边长的长度,并且平均速度与每条边相关联,那么你可以将结果连接回边缘表来计算时间。

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;