pgr_turnRestrictedPath - 实验性¶
pgr_turnRestrictedPath
使用 Yen 算法顶点- 带限制的顶点路由
Warning
可能服务器崩溃
这些功能可能会导致服务器崩溃
Warning
实验功能
它们不是当前版本的正式版本。
它们可能不会正式成为下一个版本的一部分:
这些函数可能不使用 ANY-INTEGER 和 ANY-NUMERICAL
名称可能会改变。
签名可能会改变。
功能可能会改变。
pgTap 测试可能丢失。
可能需要 c/c++编码。
可能缺乏文档。
文档(如果有)可能需要重写。
可能需要自动生成文档示例。
可能需要社区的大量反馈。
可能取决于 pgRouting 的拟议功能
可能依赖于 pgRouting 的已弃用函数
可用性
版本3.0.0
新实验功能
描述¶
利用Yen算法获得K条最短路径并对路径进行分析以选择不使用限制的路径
签名¶
[directed, heap_paths, stop_on_first, strict]
(seq, path_id, path_seq, node, edge, cost, agg_cost)
的集合- 示例:
从有向图上的顶点 \(3\) 到顶点 \(8\)
SELECT * FROM pgr_turnRestrictedPath(
$$SELECT id, source, target, cost, reverse_cost FROM edges$$,
$$SELECT path, cost FROM restrictions$$,
3, 8, 3);
seq | path_id | path_seq | node | edge | cost | agg_cost
-----+---------+----------+------+------+------+----------
1 | 1 | 1 | 3 | 7 | 1 | Infinity
2 | 1 | 2 | 7 | 10 | 1 | 1
3 | 1 | 3 | 8 | -1 | 0 | 2
(3 rows)
参数¶
列 |
类型 |
描述 |
---|---|---|
|
如所述的 SQL 查询。 |
|
start vid |
ANY-INTEGER |
出发顶点的标识符。 |
end vid |
ANY-INTEGER |
目标顶点的标识符。 |
K |
ANY-INTEGER |
所需路径的数量。 |
其中:
- ANY-INTEGER:
SMALLINT
,INTEGER
,BIGINT
可选参数¶
列 |
类型 |
默认 |
描述 |
---|---|---|---|
|
|
|
|
KSP 可选参数¶
列 |
类型 |
默认 |
描述 |
---|---|---|---|
|
|
|
|
特殊可选参数¶
列 |
类型 |
默认 |
描述 |
---|---|---|---|
|
|
|
|
|
|
|
|
内部查询¶
Edges SQL¶
列 |
类型 |
默认 |
描述 |
---|---|---|---|
|
ANY-INTEGER |
边的标识符。 |
|
|
ANY-INTEGER |
边的第一个端点顶点的标识符。 |
|
|
ANY-INTEGER |
边的第二个端点顶点的标识符。 |
|
|
ANY-NUMERICAL |
边( |
|
|
ANY-NUMERICAL |
-1 |
边(
|
其中:
- ANY-INTEGER:
SMALLINT
,INTEGER
,BIGINT
- ANY-NUMERICAL:
SMALLINT
,INTEGER
,BIGINT
,REAL
,FLOAT
Restrictions SQL¶
列 |
类型 |
描述 |
---|---|---|
|
|
形成不允许采用的路径的边缘标识符序列。 - 空数组或 |
|
ANY-NUMERICAL |
走禁路的成本。 |
其中:
- ANY-INTEGER:
SMALLINT
,INTEGER
,BIGINT
- ANY-NUMERICAL:
SMALLINT
,INTEGER
,BIGINT
,REAL
,FLOAT
结果列¶
返回集合``(seq, path_id, path_seq, start_vid, end_vid, node, edge, cost, agg_cost)``
列 |
类型 |
描述 |
---|---|---|
|
|
从 1 开始的顺序值。 |
|
|
路径标识符。
|
|
|
路径中的相对位置。 路径开头的值为 1。 |
|
|
起始顶点的标识符。 |
|
|
结束顶点的标识符。 |
|
|
从 |
|
|
用于从路径序列中的 |
|
|
从使用 |
|
|
从 |
其他示例¶
- 示例:
从顶点 \(3\) 到 \(8\),并启用
strict
标志。
没有结果,因为唯一可用的路径受到限制。
SELECT * FROM pgr_turnRestrictedPath(
$$SELECT id, source, target, cost, reverse_cost FROM edges$$,
$$SELECT path, cost FROM restrictions$$,
3, 8, 3,
strict => true);
seq | path_id | path_seq | node | edge | cost | agg_cost
-----+---------+----------+------+------+------+----------
(0 rows)
- 示例:
从无向图上的顶点 \(3\) 到顶点 \(8\)
SELECT * FROM pgr_turnRestrictedPath(
$$SELECT id, source, target, cost, reverse_cost FROM edges$$,
$$SELECT path, cost FROM restrictions$$,
3, 8, 3,
directed => false);
seq | path_id | path_seq | node | edge | cost | agg_cost
-----+---------+----------+------+------+------+----------
1 | 1 | 1 | 3 | 7 | 1 | 0
2 | 1 | 2 | 7 | 4 | 1 | 1
3 | 1 | 3 | 6 | 2 | 1 | 2
4 | 1 | 4 | 10 | 5 | 1 | 3
5 | 1 | 5 | 11 | 11 | 1 | 4
6 | 1 | 6 | 12 | 12 | 1 | 5
7 | 1 | 7 | 8 | -1 | 0 | 6
(7 rows)
- 示例:
从顶点 \(3\) 到顶点 \(8\) 更多选择
SELECT * FROM pgr_turnRestrictedPath(
$$SELECT id, source, target, cost, reverse_cost FROM edges$$,
$$SELECT path, cost FROM restrictions$$,
3, 8, 3,
directed => false,
heap_paths => true,
stop_on_first => false);
seq | path_id | path_seq | node | edge | cost | agg_cost
-----+---------+----------+------+------+------+----------
1 | 1 | 1 | 3 | 7 | 1 | 0
2 | 1 | 2 | 7 | 4 | 1 | 1
3 | 1 | 3 | 6 | 2 | 1 | 2
4 | 1 | 4 | 10 | 5 | 1 | 3
5 | 1 | 5 | 11 | 11 | 1 | 4
6 | 1 | 6 | 12 | 12 | 1 | 5
7 | 1 | 7 | 8 | -1 | 0 | 6
8 | 2 | 1 | 3 | 7 | 1 | 0
9 | 2 | 2 | 7 | 8 | 1 | 1
10 | 2 | 3 | 11 | 9 | 1 | 2
11 | 2 | 4 | 16 | 15 | 1 | 3
12 | 2 | 5 | 17 | 13 | 1 | 4
13 | 2 | 6 | 12 | 12 | 1 | 5
14 | 2 | 7 | 8 | -1 | 0 | 6
(14 rows)
另请参阅¶
索引和表格