Postgres pgrouting2 Dijkstra 最短路径返回不存在的边



几天来,我一直在为一个非常奇怪的问题而苦苦挣扎,现在我找不到解决方案。我正在使用带有postgis 2和pgrouting 2扩展的postgresql 9.3。我已经导入了一个城市的OSM数据,并使用pgr_createTopology((功能成功创建了拓扑网络。我可以通过执行例如 Dijkstra 算法成功找到最短路径(忽略简化成本函数(

 SELECT * from pgr_dijkstra(
   'SELECT id, source, target, st_length(way) as cost FROM planet_osm_roads',
    5744, 5900, false, false
    )

并获得以下结果(序列,ID1,ID2,成本(

0;5744;178191032;428.359590042932
1;5749;177327184;61.7533237967002
2;5821;177327456;544.454553269731
3;5833;177338744;51.1559809959342
4;5871;177338880;71.0702814120015
5;5900;-1;0

问题是返回的 id2 值(对应于边的 id(在planet_osm_roads表中不存在。实际上,这些值无法在planet_osm_roads表或planet_osm_roads_vertices_pgr表的任何列中找到。我错过了什么吗?也许有人以前遇到过同样的问题。

提前谢谢大家

对于边缘 ID,您有什么样的值?pgRouting 仅支持 32 位整数值,如果您的 id 较大,则它们将被静默截断。这是一个已知问题。

最新更新