2016-12-03 515 views
0

我创建了一个基于OSM的路由网络,其中PostgreSQL中的OSM2PO的扩展名为pgrouting。我有一列km(以km为单位),列cost(驾驶时间)和max_speed。我尝试使用列km(以km为单位)创建功能pgr_drivingDistance的集水区。这用最短路径来计算流域,这在大多数情况下不是汽车的实际距离。因此,我想根据最短驾驶时间使用cost来计算流域。但在结果中,我需要的单位,而不是时间。非常感谢任何提示。使用pgr_drivingDistance获取最快路径的距离

短版本:我需要一个以km为单位的最快(最短时间)路线的集水区!

这里是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 ; 
+0

这是一个很专业的问题。也许你在http://dba.stackexchange.com更好 –

+0

这是关于空间功能如此之好gis.stackexchange.com – Jendrusk

回答

0

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

0

如果你有特征类型(高速公路,主要RD),创建具有MAX_SPEED列和除以MAX_SPEED到的距离将为您提供旅行路段所需的时间。这次可以选择成本来给出最短的驾驶距离。

+0

感谢您的回答。 OSM2PO的工具已经创建了一个名为'cost'的列,其中包含驾驶时间。但是,根据“成本”计算流域不会给我最快路线的公里距离。 – Martin

+0

将成本更改为列(距离/速度)以获得最快路线 1.将成本列除以新的max_speed列,您可以在其中插入每种要素类型的最大速度。 2.以这个新列作为成本,并根据(时间成本)计算pgr_drivingDistance。 – Columbo25

+0

感谢您的回复。也许我不明白这一点,但在我看来,这是不可能达到我的目的的,因为我不会在开始时计算任何最快的路线,我只能使用函数_pgr_drivingDistance_。我需要距离A点100km范围内的所有节点的最快路线以及以km为单位的距离信息。 – Martin