【问题标题】:pgr_dijkstra returns an empty setpgr_dijkstra 返回一个空集
【发布时间】:2019-09-09 17:06:26
【问题描述】:

我正在尝试编写一个函数,该函数能够使用pgr_dijkstra 函数找到两点之间的最短路径。我正在关注this 指南。使用指南中提供的数据,一切正常。但是当我尝试将相同的步骤(使用pgr_createTopology 构建拓扑,然后使用pgr_dijkstra 对其进行测试)应用到另一个data set 时,pgr_dijkstra 返回一个空结果。我还注意到指南的数据集有一个LineString 几何列,而我有一个MultiLineString 几何列。可能是什么原因?

我的表结构:

                                        Table "public.roads"
 Column |              Type              | Collation | Nullable |              Default
--------+--------------------------------+-----------+----------+------------------------------------  
 id     | integer                        |           | not null | nextval('roads_gid_seq'::regclass)
 geom   | geometry(MultiLineString,4326) |           |          |
 source | integer                        |           |          |
 target | integer                        |           |          |
Indexes:
    "roads_pkey" PRIMARY KEY, btree (id)
    "roads_geom_idx" gist (geom)
    "roads_source_idx" btree (source)
    "roads_target_idx" btree (target)

拓扑创建查询:

SELECT pgr_createTopology('roads', 0.00001, 'geom', 'id');

最短路径测试:

SELECT seq, node, edge, cost as cost, agg_cost, geom
FROM pgr_dijkstra(
   'SELECT id, source, target, st_length(geom, true) AS cost FROM roads',
   -- Some random points
   1, 200
) AS pt
JOIN roads rd ON pt.edge = rd.id;

【问题讨论】:

  • 你遇到了什么错误

标签: postgresql postgis pgrouting


【解决方案1】:

问题实际上与几何数据类型有关。该函数不能与MultiLineString 一起正常工作,尽管它不会产生任何错误。所以,我已将MultiLineString 转换为LineString,现在一切似乎都正常了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-20
    • 2023-04-01
    • 2011-04-24
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多