如何使用 pgRouting 计算距离和时间
How to calculate distance and time, using pgRouting
我正在尝试使用 pgr_dijkstra 从 pgRouting 中的路由获取总体时间和距离,但我基本上不知道如何实现它。到目前为止,我设法弄清楚 pgr_dijkstra 中的 return 是成本单位,我将它们相加。我假设计算距离和时间实际上是在路线中的每个路段完成的。有人有关于如何执行此操作的示例吗?
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;
上面的语句会给我所有单位成本的总和...
cost 是时间或距离或您用于成本值的任何内容。如果每条边的成本是边的长度,那么成本就是距离。但是,如果您将成本设置为边的遍历时间,则成本就是时间。如果您将边的长度作为成本,并且每个边都有一个平均速度,那么您可以将结果连接回您的边 table 可以计算时间。
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;
我正在尝试使用 pgr_dijkstra 从 pgRouting 中的路由获取总体时间和距离,但我基本上不知道如何实现它。到目前为止,我设法弄清楚 pgr_dijkstra 中的 return 是成本单位,我将它们相加。我假设计算距离和时间实际上是在路线中的每个路段完成的。有人有关于如何执行此操作的示例吗?
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;
上面的语句会给我所有单位成本的总和...
cost 是时间或距离或您用于成本值的任何内容。如果每条边的成本是边的长度,那么成本就是距离。但是,如果您将成本设置为边的遍历时间,则成本就是时间。如果您将边的长度作为成本,并且每个边都有一个平均速度,那么您可以将结果连接回您的边 table 可以计算时间。
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;