Postgresql pgr_astar和不可能的边缘(例如,锁定的门)

Postgresql pgr_astar和不可能的边缘(例如,锁定的门),postgresql,postgis,a-star,pgrouting,Postgresql,Postgis,A Star,Pgrouting,我正在使用postgresql/PostGIS和pgrouting,我需要计算最短路径。在先前版本的pgrouting中,我使用的是最短路径。在我的布线图中,我有一些不可能的部分,比如锁着的门。我用过: SELECT id FROM shortest_path_astar('SELECT edge_id AS id, vertex_id1 AS source, vertex_id2 AS target, ' || '(CASE WHEN door = ''S'' THEN -1.0 ELSE

我正在使用postgresql/PostGIS和pgrouting,我需要计算最短路径。在先前版本的pgrouting中,我使用的是最短路径。在我的布线图中,我有一些不可能的部分,比如锁着的门。我用过:

SELECT id FROM shortest_path_astar('SELECT edge_id AS id, vertex_id1 AS source, vertex_id2 AS target, ' || '(CASE WHEN door = ''S'' THEN -1.0  ELSE  (length)  )  END)::float8 AS cost, ' || '(CASE WHEN door_rev = ''S'' THEN -1.0  ELSE  (length)  )  END )::float8 AS reverse_cost, ' || 'x1, y1, x2, y2 FROM edges', origin_node, destination_node, TRUE, TRUE)
基本上:当门关闭时(door=''S''),我将成本固定为-1。在这个函数的新版本pgr_astar出现之前,它一直运行良好。使用pgr_astar而不是最短路径_astar,此查询会使服务器崩溃


如何更改我的函数以避免崩溃?

我最终使用了pgr\u bdAstar,双向A*最短路径。

您能否在问题跟踪器中发布一个简单的测试用例来重现此崩溃:


成本:-1应该有效应该有效。

我在中读到“负成本将阻止边缘插入图形”,因此它应该是相同的。但是如果我删除它,它就不会崩溃了。问题是我不知道问题到底在哪里,所以我不能创建一个简单的测试用例。我只能向您发送整个网络(50000条边和几乎相同数量的节点)。我还不确定我能不能分享这些数据。我正在协商。我只是检查代码,任何成本<0.0的边都不会添加到图中。因此,我猜想问题可能与这样一个事实有关,即在开始节点和结束节点之间可能没有任何有效的路由。您能否在psql中运行查询并将失败的结果复制到此线程。