【发布时间】: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