0

我在 PostgreSQL 中使用OSM2PO创建了一个基于 OSM 的路由网络,扩展名为 pgrouting。我有一个列km(以公里为单位的距离)、一个列cost(行驶时间)和max_speed. 我尝试使用列(以公里为单位的距离)创建具有函数pgr_drivingDistance的集水区。km这会计算出具有最短路径的集水区,在大多数情况下,这对于汽车来说并不是一个现实的距离。因此,我想根据最短的驾驶时间使用cost. 但结果,我需要以为单位而不是时间。非常感谢任何提示。

简短版本:我需要一个以公里为单位的集水区,以获取最快(最短时间)的路线!

以下是 pgr_drivingDistance 的标准代码,最短距离以公里为单位:

SELECT *
   FROM routing_vertices_pgr
   JOIN(
SELECT * FROM pgr_drivingDistance('
SELECT id,
     source,
     target,
     km as cost
    FROM routing',
1, 100, false)) AS route ON routing_vertices_pgr.id = route.node ;
4

2 回答 2

0

如果您具有要素类型(高速公路、主要 rd),则使用 max_speed 创建一个列并将此 max_speed 划分为距离将为您提供行驶路段所需的时间。可以选择这个时间作为成本来给出最短的行驶距离。

于 2016-12-06T18:07:10.230 回答
0

你不能做这样的事情......在驾驶距离中,你正在决定你的成本(时间或距离或其他东西)是多少,而功能正在处理这个成本。成本只是一个......我认为解决方案之一可能是计算距离,但使用 clazz 或 flags 字段从边缘排除这种“对汽车不现实”。你会在你的 osm2po 配置文件中找到这个字段的描述。

于 2016-12-27T10:50:20.617 回答