pgr_withPointsDD
- 拟议¶
pgr_withPointsDD
- 返回从起点开始的行驶 距离 。
Warning
下一版本的拟议功能。
它们并未正式出现在当前版本中。
它们可能会正式成为下一个版本的一部分:
这些函数使用 ANY-INTEGER 和 ANY-NUMERICAL
名字可能不会改变。(但仍然有可能改变)
签名可能不会改变。(但仍然有可能改变)
功能可能不会改变。(但仍然有可能改变)
pgTap 测试已经完成。 但可能需要更多。
文档可能需要完善。
可用性
版本3.6.0
签名更改:
driving_side
参数从已命名的可选参数改为未命名的必选参数 driving side。pgr_withPointsDD
(单顶点)pgr_withPointsDD
(多个顶点)
将输出列标准化为
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
pgr_withPointsDD
(单顶点)添加了
depth
、pred
和start_vid
列。
pgr_withPointsDD
(多个顶点)添加了
depth
,pred
列。
When
details
isfalse
:只有那些被访问的兴趣点会被移除,也就是说,位于一定距离范围内被到达的兴趣点会被包含在内
弃用签名
pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)
pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)
版本 2.2.0
新 拟议 函数
描述¶
修改图以包含点,并使用 Dijkstra 算法,提取成本小于或等于距起点 **距离**
值的所有节点和点。 提取的边将符合相应的生成树。
签名¶
[directed, details]
[directed, details, equicost]
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
单顶点¶
[directed, details]
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
- 示例:
右侧驾驶拓扑,从点 \(1\) 开始,距离不超过 \(3.3\),并提供详细信息。
SELECT * FROM pgr_withPointsDD(
'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id',
'SELECT pid, edge_id, fraction, side from pointsOfInterest',
-1, 3.3, 'r',
details => true);
seq | depth | start_vid | pred | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+------+----------
1 | 0 | -1 | -1 | -1 | -1 | 0 | 0
2 | 1 | -1 | -1 | 5 | 1 | 0.4 | 0.4
3 | 2 | -1 | 5 | 6 | 1 | 1 | 1.4
4 | 3 | -1 | 6 | -6 | 4 | 0.7 | 2.1
5 | 4 | -1 | -6 | 7 | 4 | 0.3 | 2.4
(5 rows)
多个顶点¶
[directed, details, equicost]
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
- 示例:
从点 \(1\) 和顶点 \(16\) 出发,在有向图上以
equicost
模式,在距离不超过 \(3.3\) 的范围内
SELECT * FROM pgr_withPointsDD(
'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id',
'SELECT pid, edge_id, fraction, side from pointsOfInterest',
ARRAY[-1, 16], 3.3, 'l',
equicost => true);
seq | depth | start_vid | pred | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+------+----------
1 | 0 | -1 | -1 | -1 | -1 | 0 | 0
2 | 1 | -1 | -1 | 6 | 1 | 0.6 | 0.6
3 | 2 | -1 | 6 | 7 | 4 | 1 | 1.6
4 | 2 | -1 | 6 | 5 | 1 | 1 | 1.6
5 | 3 | -1 | 7 | 3 | 7 | 1 | 2.6
6 | 3 | -1 | 7 | 8 | 10 | 1 | 2.6
7 | 4 | -1 | 8 | -3 | 12 | 0.6 | 3.2
8 | 4 | -1 | 3 | -4 | 6 | 0.7 | 3.3
9 | 0 | 16 | 16 | 16 | -1 | 0 | 0
10 | 1 | 16 | 16 | 11 | 9 | 1 | 1
11 | 1 | 16 | 16 | 15 | 16 | 1 | 1
12 | 1 | 16 | 16 | 17 | 15 | 1 | 1
13 | 2 | 16 | 15 | 10 | 3 | 1 | 2
14 | 2 | 16 | 11 | 12 | 11 | 1 | 2
(14 rows)
参数¶
列 |
类型 |
描述 |
---|---|---|
|
Edges SQL 如下所述 |
|
|
Points SQL 如下所述 |
|
Root vid |
|
树的根顶点的标识符。
|
Root vids |
|
根顶点的标识符数组。
|
distance |
|
结果中包含节点的上限。 |
driving side |
|
|
其中:
- ANY-INTEGER:
SMALLINT, INTEGER, BIGINT
可选参数¶
列 |
类型 |
默认 |
描述 |
---|---|---|---|
|
|
|
|
带点可选参数¶
参数 |
类型 |
默认 |
描述 |
---|---|---|---|
|
|
|
|
行驶距离可选参数¶
列 |
类型 |
默认 |
描述 |
---|---|---|---|
|
|
|
|
内部查询¶
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
Points SQL¶
参数 |
类型 |
默认 |
描述 |
---|---|---|---|
|
ANY-INTEGER |
value |
点的标识符。
|
|
ANY-INTEGER |
距离该点“最近”的边的标识符。 |
|
|
ANY-NUMERICAL |
<0,1> 中的值指示距边缘第一个端点的相对位置。 |
|
|
|
|
[
|
其中:
- ANY-INTEGER:
SMALLINT
,INTEGER
,BIGINT
- ANY-NUMERICAL:
SMALLINT
,INTEGER
,BIGINT
,REAL
,FLOAT
结果列¶
Returns set of (seq, depth, start_vid, pred, node, edge, cost, agg_cost)
参数 |
类型 |
描述 |
---|---|---|
|
|
从 \(1\) 开始的顺序值。 |
|
|
|
|
|
根顶点的标识符。 |
|
|
|
|
|
使用 |
|
|
从
|
|
|
遍历 |
|
|
从 |
其他示例¶
在 Points SQL 中使用 pgr_findCloseEdges。¶
求图上点 (2.9, 1.8) 距离最近的两个位置的行驶距离。
SELECT * FROM pgr_withPointsDD(
$e$ SELECT * FROM edges $e$,
$p$ SELECT edge_id, round(fraction::numeric, 2) AS fraction, side
FROM pgr_findCloseEdges(
$$SELECT id, geom FROM edges$$,
(SELECT ST_POINT(2.9, 1.8)),
0.5, cap => 2)
$p$,
ARRAY[-1, -2], 2.3, 'r',
details => true);
seq | depth | start_vid | pred | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+------+----------
1 | 0 | -2 | -2 | -2 | -1 | 0 | 0
2 | 1 | -2 | -2 | 11 | 8 | 0.1 | 0.1
3 | 2 | -2 | 11 | 16 | 9 | 1 | 1.1
4 | 2 | -2 | 11 | 12 | 11 | 1 | 1.1
5 | 2 | -2 | 11 | 7 | 8 | 1 | 1.1
6 | 3 | -2 | 12 | 17 | 13 | 1 | 2.1
7 | 3 | -2 | 16 | 15 | 16 | 1 | 2.1
8 | 3 | -2 | 7 | 8 | 10 | 1 | 2.1
9 | 3 | -2 | 7 | 6 | 4 | 1 | 2.1
10 | 3 | -2 | 7 | 3 | 7 | 1 | 2.1
11 | 0 | -1 | -1 | -1 | -1 | 0 | 0
12 | 1 | -1 | -1 | 11 | 5 | 0.2 | 0.2
13 | 2 | -1 | 11 | 7 | 8 | 1 | 1.2
14 | 2 | -1 | 11 | 16 | 9 | 1 | 1.2
15 | 2 | -1 | 11 | 12 | 11 | 1 | 1.2
16 | 3 | -1 | 7 | -2 | 8 | 0.9 | 2.1
17 | 3 | -1 | 7 | 3 | 7 | 1 | 2.2
18 | 3 | -1 | 7 | 6 | 4 | 1 | 2.2
19 | 3 | -1 | 7 | 8 | 10 | 1 | 2.2
20 | 3 | -1 | 16 | 15 | 16 | 1 | 2.2
21 | 3 | -1 | 12 | 17 | 13 | 1 | 2.2
(21 rows)
点 \(-1\) 对应距离点 \((2.9, 1.8)\) 最近的边。
点 \(-2\) 对应于点 \((2.9, 1.8)\) 的下一条近边。
驾驶侧并不重要¶
从点 \(1\) 开始,在距离不超过 \(3.3\) 的范围内,无论驾驶方向如何,提供详细信息。
SELECT * FROM pgr_withPointsDD(
'SELECT id, source, target, cost, reverse_cost FROM edges ORDER BY id',
'SELECT pid, edge_id, fraction, side from pointsOfInterest',
-1, 3.3, 'b',
directed => false,
details => true);
seq | depth | start_vid | pred | node | edge | cost | agg_cost
-----+-------+-----------+------+------+------+------+----------
1 | 0 | -1 | -1 | -1 | -1 | 0 | 0
2 | 1 | -1 | -1 | 5 | 1 | 0.4 | 0.4
3 | 1 | -1 | -1 | 6 | 1 | 0.6 | 0.6
4 | 2 | -1 | 6 | -6 | 4 | 0.7 | 1.3
5 | 2 | -1 | 6 | 10 | 2 | 1 | 1.6
6 | 3 | -1 | -6 | 7 | 4 | 0.3 | 1.6
7 | 3 | -1 | 10 | -5 | 5 | 0.8 | 2.4
8 | 3 | -1 | 10 | 15 | 3 | 1 | 2.6
9 | 4 | -1 | 7 | 3 | 7 | 1 | 2.6
10 | 4 | -1 | 7 | 8 | 10 | 1 | 2.6
11 | 4 | -1 | 7 | 11 | 8 | 1 | 2.6
12 | 5 | -1 | 8 | -3 | 12 | 0.6 | 3.2
13 | 5 | -1 | 3 | -4 | 6 | 0.7 | 3.3
(13 rows)
另请参阅¶
索引和表格