pgr_drivingDistance
- Devuelve la distancia de manejo desde un nodo de inicio.
Disponibilidad
Soporte
Usando el algoritmo Dijkstra, se extraen todos los nodos que tienen costes menores o iguales al valor distance
. Los bordes extraídos se ajustarán al árbol de expansión correspondiente.
Resumen
pgr_drivingDistance(edges_sql, start_vid, distance [, directed])
pgr_drivingDistance(edges_sql, start_vids, distance [, directed] [, equicost])
RETURNS SET OF (seq, [start_vid,] node, edge, cost, agg_cost)
Uso de valores predeterminados
pgr_drivingDistance(edges_sql, start_vid, distance)
RETURNS SET OF (seq, node, edge, cost, agg_cost)
Ejemplo: | TBD |
---|
pgr_drivingDistance(edges_sql, start_vid, distance [, directed])
RETURNS SET OF (seq, node, edge, cost, agg_cost)
Ejemplo: | TBD |
---|
pgr_drivingDistance(edges_sql, start_vids, distance, [, directed] [, equicost])
RETURNS SET OF (seq, start_vid, node, edge, cost, agg_cost)
Ejemplo: | TBD |
---|
Columna | Tipo | Descripción |
---|---|---|
edges_sql | TEXT |
Consulta SQL como se describió anteriormente. |
start_vid | BIGINT |
Identificador del vértice inicial. |
start_vids | ARRAY[ANY-INTEGER] |
Arreglo de identificadores de los vértices iniciales. |
distancia | FLOAT |
Límite superior para la inclusión del nodo en el resultado. |
dirigido | BOOLEAN |
(opcional). En caso de false el grafo se considera como No Dirigido. El valor predeterminado es true que considera el grafo como Dirigido. |
equicost | BOOLEAN |
(opcional). En caso de true el nodo solo aparecerá en la lista start_vid más cercana. El valor predeterminado es false , que se asemeja a varias llamadas que utilizan las firmas de punto de inicio único. Los frenos de corbata son arbitrarios. |
Columna | Tipo | Valores predeterminados | Descripción |
---|---|---|---|
id | ANY-INTEGER |
Identificador de la arista. | |
origen | ANY-INTEGER |
Identificador del primer punto final en el vértice de la arista. | |
objetivo | ANY-INTEGER |
Identificador del segundo punto final en el vértice de la arista. | |
cost | ANY-NUMERICAL |
Peso de la arista (source, target)
|
|
reverse_cost | ANY-NUMERICAL |
-1 | Peso de la arista (target, source),
|
Donde:
ANY-INTEGER: | SMALLINT, INTEGER, BIGINT |
---|---|
ANY-NUMERICAL: | SMALLINT, INTEGER, BIGINT, REAL, FLOAT |
Devuelve el conjunto (seq [, start_v], node, edge, cost, agg_cost)
Columna | Tipo | Descripción |
---|---|---|
seq | INTEGER |
Valor secuencial a partir de 1. |
start_vid | INTEGER |
Identificador del vértice inicial. |
nodo | BIGINT |
Identificador del nodo en la ruta dentro de los límites de start_vid . |
arista | BIGINT |
Identificador del borde utilizado para llegar a node . 0 cuando node es el start_vid . |
cost | FLOAT |
Costo para atravesar edge . |
agg_cost | FLOAT |
Costo agregado de start_vid a node . |
Ejemplo: | Para consultas marcadas como directed con columnas cost and reverse_cost |
---|
Los ejemplos de esta sección utilizan lo siguiente Se utilizan redes para consultas marcadas como directed , cost y reverse_cost
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
2, 3
);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | 2 | -1 | 0 | 0
2 | 1 | 1 | 1 | 1
3 | 5 | 4 | 1 | 1
4 | 6 | 8 | 1 | 2
5 | 8 | 7 | 1 | 2
6 | 10 | 10 | 1 | 2
7 | 7 | 6 | 1 | 3
8 | 9 | 9 | 1 | 3
9 | 11 | 12 | 1 | 3
10 | 13 | 14 | 1 | 3
(10 rows)
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
13, 3
);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | 13 | -1 | 0 | 0
2 | 10 | 14 | 1 | 1
3 | 5 | 10 | 1 | 2
4 | 11 | 12 | 1 | 2
5 | 2 | 4 | 1 | 3
6 | 6 | 8 | 1 | 3
7 | 8 | 7 | 1 | 3
8 | 12 | 13 | 1 | 3
(8 rows)
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
array[2,13], 3
);
seq | from_v | node | edge | cost | agg_cost
-----+--------+------+------+------+----------
1 | 2 | 2 | -1 | 0 | 0
2 | 2 | 1 | 1 | 1 | 1
3 | 2 | 5 | 4 | 1 | 1
4 | 2 | 6 | 8 | 1 | 2
5 | 2 | 8 | 7 | 1 | 2
6 | 2 | 10 | 10 | 1 | 2
7 | 2 | 7 | 6 | 1 | 3
8 | 2 | 9 | 9 | 1 | 3
9 | 2 | 11 | 12 | 1 | 3
10 | 2 | 13 | 14 | 1 | 3
11 | 13 | 13 | -1 | 0 | 0
12 | 13 | 10 | 14 | 1 | 1
13 | 13 | 5 | 10 | 1 | 2
14 | 13 | 11 | 12 | 1 | 2
15 | 13 | 2 | 4 | 1 | 3
16 | 13 | 6 | 8 | 1 | 3
17 | 13 | 8 | 7 | 1 | 3
18 | 13 | 12 | 13 | 1 | 3
(18 rows)
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
array[2,13], 3, equicost:=true
);
seq | from_v | node | edge | cost | agg_cost
-----+--------+------+------+------+----------
1 | 2 | 2 | -1 | 0 | 0
2 | 2 | 1 | 1 | 1 | 1
3 | 2 | 5 | 4 | 1 | 1
4 | 2 | 6 | 8 | 1 | 2
5 | 2 | 8 | 7 | 1 | 2
6 | 2 | 7 | 6 | 1 | 3
7 | 2 | 9 | 9 | 1 | 3
8 | 13 | 13 | -1 | 0 | 0
9 | 13 | 10 | 14 | 1 | 1
10 | 13 | 11 | 12 | 1 | 2
11 | 13 | 12 | 13 | 1 | 3
(11 rows)
Ejemplo: | Para consultas marcadas como undirected con columnas cost y reverse_cost |
---|
Los ejemplos de esta sección utilizan lo siguiente Se utiliza la red para consultas marcadas como undirected , cost y reverse_cost
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
2, 3, false
);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | 2 | -1 | 0 | 0
2 | 1 | 1 | 1 | 1
3 | 3 | 2 | 1 | 1
4 | 5 | 4 | 1 | 1
5 | 4 | 3 | 1 | 2
6 | 6 | 8 | 1 | 2
7 | 8 | 7 | 1 | 2
8 | 10 | 10 | 1 | 2
9 | 7 | 6 | 1 | 3
10 | 9 | 16 | 1 | 3
11 | 11 | 12 | 1 | 3
12 | 13 | 14 | 1 | 3
(12 rows)
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
13, 3, false
);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | 13 | -1 | 0 | 0
2 | 10 | 14 | 1 | 1
3 | 5 | 10 | 1 | 2
4 | 11 | 12 | 1 | 2
5 | 2 | 4 | 1 | 3
6 | 6 | 8 | 1 | 3
7 | 8 | 7 | 1 | 3
8 | 12 | 13 | 1 | 3
(8 rows)
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
array[2,13], 3, false
);
seq | from_v | node | edge | cost | agg_cost
-----+--------+------+------+------+----------
1 | 2 | 2 | -1 | 0 | 0
2 | 2 | 1 | 1 | 1 | 1
3 | 2 | 3 | 2 | 1 | 1
4 | 2 | 5 | 4 | 1 | 1
5 | 2 | 4 | 3 | 1 | 2
6 | 2 | 6 | 8 | 1 | 2
7 | 2 | 8 | 7 | 1 | 2
8 | 2 | 10 | 10 | 1 | 2
9 | 2 | 7 | 6 | 1 | 3
10 | 2 | 9 | 16 | 1 | 3
11 | 2 | 11 | 12 | 1 | 3
12 | 2 | 13 | 14 | 1 | 3
13 | 13 | 13 | -1 | 0 | 0
14 | 13 | 10 | 14 | 1 | 1
15 | 13 | 5 | 10 | 1 | 2
16 | 13 | 11 | 12 | 1 | 2
17 | 13 | 2 | 4 | 1 | 3
18 | 13 | 6 | 8 | 1 | 3
19 | 13 | 8 | 7 | 1 | 3
20 | 13 | 12 | 13 | 1 | 3
(20 rows)
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost, reverse_cost FROM edge_table',
array[2,13], 3, false, equicost:=true
);
seq | from_v | node | edge | cost | agg_cost
-----+--------+------+------+------+----------
1 | 2 | 2 | -1 | 0 | 0
2 | 2 | 1 | 1 | 1 | 1
3 | 2 | 3 | 2 | 1 | 1
4 | 2 | 5 | 4 | 1 | 1
5 | 2 | 4 | 3 | 1 | 2
6 | 2 | 6 | 8 | 1 | 2
7 | 2 | 8 | 7 | 1 | 2
8 | 2 | 7 | 6 | 1 | 3
9 | 2 | 9 | 16 | 1 | 3
10 | 13 | 13 | -1 | 0 | 0
11 | 13 | 10 | 14 | 1 | 1
12 | 13 | 11 | 12 | 1 | 2
13 | 13 | 12 | 13 | 1 | 3
(13 rows)
Ejemplo: | Para consultas marcadas como directed con columna``cost`` |
---|
Los ejemplos de esta sección utilizan lo siguiente Red para consultas marcadas como directed y sólo se utiliza la columna cost
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost FROM edge_table',
2, 3
);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | 2 | -1 | 0 | 0
2 | 5 | 4 | 1 | 1
3 | 6 | 8 | 1 | 2
4 | 10 | 10 | 1 | 2
5 | 9 | 9 | 1 | 3
6 | 11 | 11 | 1 | 3
7 | 13 | 14 | 1 | 3
(7 rows)
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost FROM edge_table',
13, 3
);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | 13 | -1 | 0 | 0
(1 row)
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost FROM edge_table',
array[2,13], 3
);
seq | from_v | node | edge | cost | agg_cost
-----+--------+------+------+------+----------
1 | 2 | 2 | -1 | 0 | 0
2 | 2 | 5 | 4 | 1 | 1
3 | 2 | 6 | 8 | 1 | 2
4 | 2 | 10 | 10 | 1 | 2
5 | 2 | 9 | 9 | 1 | 3
6 | 2 | 11 | 11 | 1 | 3
7 | 2 | 13 | 14 | 1 | 3
8 | 13 | 13 | -1 | 0 | 0
(8 rows)
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost FROM edge_table',
array[2,13], 3, equicost:=true
);
seq | from_v | node | edge | cost | agg_cost
-----+--------+------+------+------+----------
1 | 2 | 2 | -1 | 0 | 0
2 | 2 | 5 | 4 | 1 | 1
3 | 2 | 6 | 8 | 1 | 2
4 | 2 | 10 | 10 | 1 | 2
5 | 2 | 9 | 9 | 1 | 3
6 | 2 | 11 | 11 | 1 | 3
7 | 13 | 13 | -1 | 0 | 0
(7 rows)
Ejemplo: | Para consultas marcadas como undirected con columna cost |
---|
Los ejemplos de esta sección utilizan lo siguiente Red para consultas marcadas como undirected y solo se utiliza la columna cost
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost FROM edge_table',
2, 3, false
);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | 2 | -1 | 0 | 0
2 | 1 | 1 | 1 | 1
3 | 5 | 4 | 1 | 1
4 | 6 | 8 | 1 | 2
5 | 8 | 7 | 1 | 2
6 | 10 | 10 | 1 | 2
7 | 3 | 5 | 1 | 3
8 | 7 | 6 | 1 | 3
9 | 9 | 9 | 1 | 3
10 | 11 | 12 | 1 | 3
11 | 13 | 14 | 1 | 3
(11 rows)
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost FROM edge_table',
13, 3, false
);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | 13 | -1 | 0 | 0
2 | 10 | 14 | 1 | 1
3 | 5 | 10 | 1 | 2
4 | 11 | 12 | 1 | 2
5 | 2 | 4 | 1 | 3
6 | 6 | 8 | 1 | 3
7 | 8 | 7 | 1 | 3
8 | 12 | 13 | 1 | 3
(8 rows)
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost FROM edge_table',
array[2,13], 3, false
);
seq | from_v | node | edge | cost | agg_cost
-----+--------+------+------+------+----------
1 | 2 | 2 | -1 | 0 | 0
2 | 2 | 1 | 1 | 1 | 1
3 | 2 | 5 | 4 | 1 | 1
4 | 2 | 6 | 8 | 1 | 2
5 | 2 | 8 | 7 | 1 | 2
6 | 2 | 10 | 10 | 1 | 2
7 | 2 | 3 | 5 | 1 | 3
8 | 2 | 7 | 6 | 1 | 3
9 | 2 | 9 | 9 | 1 | 3
10 | 2 | 11 | 12 | 1 | 3
11 | 2 | 13 | 14 | 1 | 3
12 | 13 | 13 | -1 | 0 | 0
13 | 13 | 10 | 14 | 1 | 1
14 | 13 | 5 | 10 | 1 | 2
15 | 13 | 11 | 12 | 1 | 2
16 | 13 | 2 | 4 | 1 | 3
17 | 13 | 6 | 8 | 1 | 3
18 | 13 | 8 | 7 | 1 | 3
19 | 13 | 12 | 13 | 1 | 3
(19 rows)
SELECT * FROM pgr_drivingDistance(
'SELECT id, source, target, cost FROM edge_table',
array[2,13], 3, false, equicost:=true
);
seq | from_v | node | edge | cost | agg_cost
-----+--------+------+------+------+----------
1 | 2 | 2 | -1 | 0 | 0
2 | 2 | 1 | 1 | 1 | 1
3 | 2 | 5 | 4 | 1 | 1
4 | 2 | 6 | 8 | 1 | 2
5 | 2 | 8 | 7 | 1 | 2
6 | 2 | 3 | 5 | 1 | 3
7 | 2 | 7 | 6 | 1 | 3
8 | 2 | 9 | 9 | 1 | 3
9 | 13 | 13 | -1 | 0 | 0
10 | 13 | 10 | 14 | 1 | 1
11 | 13 | 11 | 12 | 1 | 2
12 | 13 | 12 | 13 | 1 | 3
(12 rows)