pgr_drivingDistance
¶
pgr_drivingDistance
- Returns the driving distance from a start node.
Availability
- Version 2.1.0:
- Signature change pgr_drivingDistance(single vertex)
- New Official pgr_drivingDistance(multiple vertices)
- Version 2.0.0:
- Official pgr_drivingDistance(single vertex)
Description¶
Using the Dijkstra algorithm, extracts all the nodes that have costs less than
or equal to the value distance
.
The edges extracted will conform to the corresponding spanning tree.
Signatures¶
pgr_drivingDistance(Edges SQL, Root vid, distance [, directed]) pgr_drivingDistance(Edges SQL, Root vids, distance [, directed] [, equicost]) RETURNS SET OF (seq, [from_v,] node, edge, cost, agg_cost)
Single Vertex¶
pgr_drivingDistance(Edges SQL, Root vid, distance [, directed]) RETURNS SET OF (seq, node, edge, cost, agg_cost)
Example: | From vertex \(11\) for a distance of \(3.0\) |
---|
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost, reverse_cost FROM edges',
11, 3.0);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | 11 | -1 | 0 | 0
2 | 7 | 8 | 1 | 1
3 | 12 | 11 | 1 | 1
4 | 16 | 9 | 1 | 1
5 | 3 | 7 | 1 | 2
6 | 6 | 4 | 1 | 2
7 | 8 | 10 | 1 | 2
8 | 15 | 16 | 1 | 2
9 | 17 | 15 | 1 | 2
10 | 1 | 6 | 1 | 3
11 | 5 | 1 | 1 | 3
12 | 9 | 14 | 1 | 3
13 | 10 | 3 | 1 | 3
(13 rows)
Multiple Vertices¶
pgr_drivingDistance(Edges SQL, Root vids, distance [, directed] [, equicost]) RETURNS SET OF (seq, from_v, node, edge, cost, agg_cost)
Example: | From vertices \(\{11, 16\}\) for a distance of \(3.0\) with equi-cost on a directed graph |
---|
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost, reverse_cost FROM edges',
array[11, 16], 3.0, equicost => true);
seq | from_v | node | edge | cost | agg_cost
-----+--------+------+------+------+----------
1 | 11 | 11 | -1 | 0 | 0
2 | 11 | 7 | 8 | 1 | 1
3 | 11 | 12 | 11 | 1 | 1
4 | 11 | 3 | 7 | 1 | 2
5 | 11 | 6 | 4 | 1 | 2
6 | 11 | 8 | 10 | 1 | 2
7 | 11 | 1 | 6 | 1 | 3
8 | 11 | 5 | 1 | 1 | 3
9 | 11 | 9 | 14 | 1 | 3
10 | 16 | 16 | -1 | 0 | 0
11 | 16 | 15 | 16 | 1 | 1
12 | 16 | 17 | 15 | 1 | 1
13 | 16 | 10 | 3 | 1 | 2
(13 rows)
Parameters¶
Parameter | Type | Description |
---|---|---|
Edges SQL | TEXT |
Edges SQL as described below. |
Root vid | BIGINT |
Identifier of the root vertex of the tree. |
Root vids | ARRAY[ANY-INTEGER] |
Array of identifiers of the root vertices.
|
distance | FLOAT |
Upper limit for the inclusion of a node in the result. |
Where:
ANY-INTEGER: | SMALLINT , INTEGER , BIGINT |
---|---|
ANY-NUMERIC: | SMALLINT , INTEGER , BIGINT , REAL , FLOAT |
Optional parameters¶
Column | Type | Default | Description |
---|---|---|---|
directed |
BOOLEAN |
true |
|
Driving distance optional parameters¶
Column | Type | Default | Description |
---|---|---|---|
equicost |
BOOLEAN |
true |
|
Inner Queries¶
Edges SQL¶
Column | Type | Default | Description |
---|---|---|---|
id |
ANY-INTEGER | Identifier of the edge. | |
source |
ANY-INTEGER | Identifier of the first end point vertex of the edge. | |
target |
ANY-INTEGER | Identifier of the second end point vertex of the edge. | |
cost |
ANY-NUMERICAL | Weight of the edge (source , target ) |
|
reverse_cost |
ANY-NUMERICAL | -1 | Weight of the edge (
|
Where:
ANY-INTEGER: | SMALLINT , INTEGER , BIGINT |
---|---|
ANY-NUMERICAL: | SMALLINT , INTEGER , BIGINT , REAL , FLOAT |
Result Columns¶
Returns SET OF (seq, from_v, node, edge, cost, agg_cost)
Parameter | Type | Description |
---|---|---|
seq |
BIGINT |
Sequential value starting from \(1\). |
[from_v] |
BIGINT |
Identifier of the root vertex. |
node |
BIGINT |
Identifier of node within the limits from from_v . |
edge |
BIGINT |
Identifier of the
|
cost |
FLOAT |
Cost to traverse edge . |
agg_cost |
FLOAT |
Aggregate cost from from_v to node . |
Where:
ANY-INTEGER: | SMALLINT, INTEGER, BIGINT |
---|---|
ANY-NUMERIC: | SMALLINT, INTEGER, BIGINT, REAL, FLOAT, NUMERIC |
Additional Examples¶
Example: | From vertices \(\{11, 16\}\) for a distance of \(3.0\) on an undirected graph |
---|
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost, reverse_cost FROM edges',
array[11, 16], 3.0, directed => false);
seq | from_v | node | edge | cost | agg_cost
-----+--------+------+------+------+----------
1 | 11 | 11 | -1 | 0 | 0
2 | 11 | 7 | 8 | 1 | 1
3 | 11 | 10 | 5 | 1 | 1
4 | 11 | 12 | 11 | 1 | 1
5 | 11 | 16 | 9 | 1 | 1
6 | 11 | 3 | 7 | 1 | 2
7 | 11 | 6 | 2 | 1 | 2
8 | 11 | 8 | 10 | 1 | 2
9 | 11 | 15 | 3 | 1 | 2
10 | 11 | 17 | 15 | 1 | 2
11 | 11 | 1 | 6 | 1 | 3
12 | 11 | 5 | 1 | 1 | 3
13 | 11 | 9 | 14 | 1 | 3
14 | 16 | 16 | -1 | 0 | 0
15 | 16 | 11 | 9 | 1 | 1
16 | 16 | 15 | 16 | 1 | 1
17 | 16 | 17 | 15 | 1 | 1
18 | 16 | 7 | 8 | 1 | 2
19 | 16 | 10 | 5 | 1 | 2
20 | 16 | 12 | 13 | 1 | 2
21 | 16 | 3 | 7 | 1 | 3
22 | 16 | 6 | 4 | 1 | 3
23 | 16 | 8 | 10 | 1 | 3
(23 rows)