我在PostgreSQL中使用OSM2PO创建了一个基于OSM的路由网络,扩展名为pgrouting。我有一列km
(以km为单位的距离),一列cost
(驾驶时间)和max_speed
。我尝试使用列km
(以km为单位的距离)创建具有 pgr_drivingDistance 功能的集水区。这计算了具有最短路径的集水区,在大多数情况下,该集水区不是汽车的实际距离。因此,我想使用cost
根据最短的驾驶时间来计算集水区。但在结果中,我需要米和不是时间的单位。非常感谢任何提示。
简短版本:我需要一个最快(最短时间)路线的距离以千米为单位的集水区!
以下是以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 :(得分:0)
如果您具有要素类型(高速公路,主要路径),则使用max_speed创建一个列并将此max_speed除以距离将为您提供行驶路段所需的时间。可以选择此时间作为成本,以获得最短的行驶距离。
答案 1 :(得分:0)
你不能做这样的事情......在驾驶距离你决定你的成本(时间或距离或其他),功能正在处理这个成本。成本只有一个...我认为其中一个解决方案可能是计算距离,但是从边缘排除这对于使用clazz或flags字段的汽车来说是不现实的。你可以在osm2po配置文件中找到这个字段的描述。