使用 pgr_drivingDistance 获取最快路径的距离
Get distance of fastest path with pgr_drivingDistance
我在 PostgreSQL 中使用 OSM2PO 创建了一个基于 OSM 的路由网络,扩展名为 pgrouting。我有一个列 km
(以公里为单位的距离),一个列 cost
(行车时间)和 max_speed
。我尝试使用 pgr_drivingDistance 列(以公里为单位的距离)使用函数 pgr_drivingDistance 创建一个集水区。这将计算出具有最短路径的集水区,这在大多数情况下不是汽车的实际距离。因此我想使用 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 ;
如果您拥有要素类型(高速公路、主要路段),则创建一个包含 max_speed 的列并将此 max_speed 划分为距离将为您提供行驶该路段所需的时间.可以选择这个时间作为成本,给出最短的行驶距离。
你不能做这样的事情......在驾驶距离中你决定你的成本是多少(时间或距离或其他)并且功能正在处理这个成本。成本只是一个...我认为解决方案之一可能是计算距离,但使用 clazz 或 flags 字段从边缘排除 'not realistic for cars'。您将在您的 osm2po 配置文件中找到这些字段的描述。
我在 PostgreSQL 中使用 OSM2PO 创建了一个基于 OSM 的路由网络,扩展名为 pgrouting。我有一个列 km
(以公里为单位的距离),一个列 cost
(行车时间)和 max_speed
。我尝试使用 pgr_drivingDistance 列(以公里为单位的距离)使用函数 pgr_drivingDistance 创建一个集水区。这将计算出具有最短路径的集水区,这在大多数情况下不是汽车的实际距离。因此我想使用 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 ;
如果您拥有要素类型(高速公路、主要路段),则创建一个包含 max_speed 的列并将此 max_speed 划分为距离将为您提供行驶该路段所需的时间.可以选择这个时间作为成本,给出最短的行驶距离。
你不能做这样的事情......在驾驶距离中你决定你的成本是多少(时间或距离或其他)并且功能正在处理这个成本。成本只是一个...我认为解决方案之一可能是计算距离,但使用 clazz 或 flags 字段从边缘排除 'not realistic for cars'。您将在您的 osm2po 配置文件中找到这些字段的描述。