【问题标题】:Get distance of fastest path with pgr_drivingDistance使用 pgr_drivingDistance 获取最快路径的距离
【发布时间】:2016-12-03 00:45:58
【问题描述】:

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

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

以下是 pgr_drivingDistance 的标准代码,最短距离为 km:

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 ;

【问题讨论】:

  • 这是一个非常专业的问题。也许你更擅长dba.stackexchange.com
  • 这是关于空间功能的,所以更好 gis.stackexchange.com

标签: postgresql openstreetmap pgrouting


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您的回答。工具 OSM2PO 已经创建了一个名为 cost 的列,其中包含行驶时间。但是根据cost 计算集水区不会给我最快路线的公里距离。
    • 将成本更改为列(距离/速度)以获得最快的路线 1. 将成本列除以新的 max_speed 列,您可以在其中插入每种要素类型的最大速度。 2. 将这个新列作为成本,从(时间作为成本)计算 pgr_drivingDistance。
    • 感谢您的回复。也许我不明白这一点,但在我看来,这不可能达到我的目的,因为我一开始没有计算任何最快的路线,我只能使用函数 pgr_drivingDistance .我需要距离 A 点 100 公里范围内的所有节点的最快路线,并提供有关距离的信息(以公里为单位)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-06-15
    相关资源
    最近更新 更多