You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

道路网络警局等时圈生成问题:修改时间参数结果无变化求助

问题原因与解决方案

核心问题

你的代码存在两个关键错误:

  1. 定义了计算时间成本的distance_query CTE,但完全没有在pgr_drivingDistance调用中使用它,导致实际传入的cost是道路表的默认成本(大概率是道路长度,单位米)。
  2. 调用pgr_drivingDistance时传入的终止参数(120、300)是时间秒数,但cost字段却是长度单位,两者不匹配。当120米已经覆盖所有可达道路时,改成300米的结果自然不会变化。

修正后的代码

根据40km/h的速度,重新计算每段道路的行驶时间作为cost参数,再调用pgr_drivingDistance:

SELECT ways.the_geom
FROM (
    SELECT *
    FROM pgr_drivingDistance(
        'SELECT gid as id, 
                source, 
                target, 
                -- 计算单段道路的行驶时间(秒):长度(米)转公里 ÷ 速度(km/h) × 3600转秒
                (length / 1000) / 40 * 3600 AS cost
         FROM ways',
        2338, -- 警局对应的起点节点ID
        120   -- 2分钟=120秒,可替换为300/600/900对应5/10/15分钟
    )
) AS route
LEFT JOIN ways ON ways.gid = route.edge

额外注意事项

  • 确认ways表的length字段单位是米,如果是公里需调整计算逻辑(去掉/1000)。
  • 若道路支持双向通行,需添加reverse_cost参数保证反向路径被计算:
    'SELECT gid as id, 
            source, 
            target, 
            (length / 1000) / 40 * 3600 AS cost,
            (length / 1000) / 40 * 3600 AS reverse_cost
     FROM ways'
    
  • 验证起点节点ID(2338)确实是警局位置对应的网络节点,而非道路ID。

内容的提问来源于stack exchange,提问作者Dardan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 09:15:34