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

时间:2014-12-18 13:55:58

标签: postgresql postgis postgresql-9.3 pgrouting

我正在努力解决一个非常奇怪的问题几天,因为我找不到解决方案。 我正在使用postgresql 9.3和postgis 2以及pgrouting 2 extentions。我已经为一个城市导入了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
    )

并获得以下结果(seq,id1,id2,cost)

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

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

提前谢谢大家

1 个答案:

答案 0 :(得分:3)

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