pgr_drivingDistance
¶
pgr_drivingDistance
- Devuelve la distancia de manejo desde un nodo de inicio.
Disponibilidad
Versión 2.1.0:
Cambio de firma pgr_drivingDistance(vértice único)
Nuevo Oficial pgr_drivingDistance(multiples vértices)
Versión 2.0.0:
Oficial pgr_drivingDistance(vértice único)
Descripción¶
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.
Firmas¶
directed
])(seq, [from_v,] node, edge, cost, agg_cost)
Vértice Único¶
directed
])(seq, path_seq, node, edge, cost, agg_cost)
- Ejemplo:
Desde el vértice \(11\) por una distancia de \(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)
Múltiples Vértices¶
(seq, from_v, node, edge, cost, agg_cost)
- Ejemplo:
Desde los vertices \(\{11, 16\}\) por una distancia de \(3.0\) con equi-cost en un grafo dirigido
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)
Parámetros¶
Parámetro |
Tipo |
Descripción |
---|---|---|
|
SQL de aristas como se describen abajo. |
|
id raíz |
|
Identificador del vértice raíz del árbol. |
Raíces |
|
Arreglo de identificadores de los vértices raíz.
|
distancia |
|
Límite superior para la inclusión del nodo en el resultado. |
Donde:
- ENTEROS:
SMALLINT
,INTEGER
,BIGINT
- FLOTANTES:
SMALLINT
,INTEGER
,BIGINT
,REAL
,FLOAT
Parámetros opcionales¶
Columna |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
|
|
|
Parámetros opcionales de distancia de manejo¶
Columna |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
|
|
|
Consultas Internas¶
SQL aristas¶
Columna |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
ENTEROS |
Identificador de la arista. |
|
|
ENTEROS |
Identificador del primer vértice de la arista. |
|
|
ENTEROS |
Identificador del segundo vértice de la arista. |
|
|
FLOTANTES |
Peso de la arista ( |
|
|
FLOTANTES |
-1 |
Peso de la arista (
|
Donde:
- ENTEROS:
SMALLINT
,INTEGER
,BIGINT
- FLOTANTES:
SMALLINT
,INTEGER
,BIGINT
,REAL
,FLOAT
Columnas de Resultados¶
Devuelve el conjunto (seq, from_v, node, edge, cost, agg_cost)
Parámetro |
Tipo |
Descripción |
---|---|---|
|
|
Valor secuencial a partir de \(1\). |
|
|
Identificador del vértice raíz. |
|
|
Identificador del |
|
|
Identificador del
|
|
|
Costo por recorrer |
|
|
Costo agregado desde |
Donde:
- ENTEROS:
SMALLINT, INTEGER, BIGINT
- FLOTANTES:
SMALLINT, INTEGER, BIGINT, REAL, FLOAT, NUMERIC
Ejemplos Adicionales¶
- Ejemplo:
Desde vértices math:{11, 16} con una distancia de \(3.0\) en un grafo no dirigido
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)
Ver también¶
pgr_alphaShape - Cálcular la forma Alpha
Índices y tablas