postgresql - 如何使用 PostgreSQL pgrouting 函数找到具有 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;
问题是:
如何找到具有最多 K 个边的这两个点之间的最短路径?
安装了 postgis 和 pgrouting;网络拓扑已创建
解决方案
经过大量研究,我注意到 Dijkstra 在本质上不能对边缘数量进行任何限制。所以我不得不创建一个受贝尔曼福特启发的算法。
有关详细信息,请查看以下存储库:
推荐阅读
- swift - 在 Swift 中的 ViewController 之间共享设备 CLLocation 的最佳方法是什么?
- javascript - 无渲染组件的酶浅返回未定义
- responsive - 什么是响应式网站,为什么要使用它们,以及如何开发它们?
- react-native - 在 react-native 中动态隐藏导航标题
- multithreading - 对非常大的文件进行排序的最快方法,最好有进度
- reactjs - 在 React Native 中计算距离
- word2vec - 为什么 word2bits RAM 使用像 word2vec?
- linux - 我们可以通过 USB 设备传递到 Linux 上的 Docker 容器吗?
- javascript - HTML AJAX 方法不起作用
- javascript - Nodemon 不断重启 child pig 不断变化