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

带转向限制的pg_trsp多对多路径查询报错求助与解决

用pgRouting的pgr_trsp批量生成多OD对最短路径的问题与解决

单个OD对的正常查询

单个起终点(OD)对的pgr_trsp查询可正常执行,SQL语句如下:

SELECT * FROM pgr_trsp (
            'SELECT id::integer, source::integer, target::integer, cost, reverse_cost FROM edges_df',
            97270,
            97269,
            True,
            True,
            'SELECT to_cost, target_id::int4, via_path from restrictions'
            ) a 

批量查询的错误情况

尝试批量处理多OD对时,执行查询后报错:pgr_trsp(unknown, bigint[], bigint[], boolean, boolean, unknown),以下是两种尝试过的错误查询:

从表生成起点/终点数组的查询

SELECT * FROM pgr_trsp (
            'SELECT id::integer, source::integer, target::integer, cost, reverse_cost FROM edges_df',
            array(SELECT vertex_id FROM od_vertex_id),
            array(SELECT vertex_id FROM od_vertex_id),
            True,
            True,
            'SELECT to_cost, target_id::int4, via_path from restrictions'
            )

手动指定顶点ID数组的查询

SELECT * FROM pgr_trsp (
            'SELECT id::integer, source::integer, target::integer, cost, reverse_cost FROM edges_df',
            97270,
            ARRAY[97269, 27268],
            True,
            True,
            'SELECT to_cost, target_id::int4, via_path from restrictions'
            ) a

已验证数组格式正确,但仍出现相同错误。

最终解决方法

2024-11-06更新:已找到可行的批量查询语句,SQL如下:

SELECT a.* FROM pgr_trsp(
            $$SELECT id::integer, source::integer, target::integer, cost, reverse_cost FROM edges_df$$,
            $$select to_cost as cost, via_path::int4 as target_id, ARRAY[target_id::integer] as path
            from restrictions$$,
            $$ select * from od_matrix where pair_rank>={rank_min} and pair_rank<={rank_max}$$
            ) a

语句说明

  • 第一部分:定义边网络数据源,需包含边的ID、起点、终点、正向成本、反向成本字段
  • 第二部分:定义转向限制数据,注意字段映射为cost(原to_cost)、target_id(原via_path)、path(原target_id组成的数组)
  • 第三部分:指定存储OD对的表,通过rank_min和rank_max参数分批处理OD对,避免请求规模过大导致性能问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 20:03:15