如何使用PostgreSQL灌浆函数在MOST K边缘的两个几何点之间找到最短路径?

问题描述

我建立了包含顶点和边的表格(代表机场及其之间的路线)。 使用以下查询,我可以获得两点之间的最短路径。

SELECT p.seq,p.node,p.cost,r.geom as edge_geom,c.name
FROM
pgr_dijkstra(
        'SELECT id,source,target,distance AS cost FROM airport_route',(SELECT id FROM airport WHERE code = 'HEL'),(SELECT id FROM airport WHERE code = 'LAS'),TRUE
    ) AS p
    LEFT JOIN airport_route AS r ON p.edge = r.id
    LEFT JOIN airport AS c ON p.node = c.id
ORDER BY
p.seq;

结果如下:

Query result

问题是

如何找到这两个点之间具有K边最多的最短路径?

安装了

postgis和pgrouting;网络拓扑已创建

解决方法

经过大量研究,我注意到Dijkstra不能对边缘的数量进行任何限制。所以我不得不创建一个受Bellman Ford启发的算法。

有关详细信息,请查看以下存储库:

https://github.com/majidakbari/flight