Versiones no soportadas:2.6 2.5 2.4 2.3 2.2
pgr_withPointsDD
¶
pgr_withPointsDD
- Devuelve la distancia de conducción desde un punto de partida.
Disponibilidad
Versión 4.0.0
Función promovida a oficial.
Versión 3.6.0
Signature change:
driving_side
parameter changed from named optional to unnamed compulsory driving side.pgr_withPointsDD(Vértice único)
pgr_withPointsDD(Múltiples vértices)
Estandarización de columnas de resultados a
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
pgr_withPointsDD(Vértice único)
Agregado las columnas
depth
,pred
ystart_vid
.
pgr_withPointsDD(Múltiples vértices)
Agregado las columnas
depth
ypred
.
Cuando
details
esfalse
:Only points that are visited are removed, that is, points reached within the distance are included
Firmas obsoletas
pgr_withpointsdd(text,text,bigint,double precision,boolean,character,boolean)
pgr_withpointsdd(text,text,anyarray,double precision,boolean,character,boolean,boolean)
Version 2.2.0
Nueva función propuesta.
Descripción¶
Modifica el grafo para incluir puntos y utilizando el algoritmo Dijkstra, extrae todos los nodos y puntos que tienen costes menores o iguales que el valor de **distance**
desde el punto inicial. Las aristas extraídas conformarán el árbol de expansión correspondiente.
Firmas¶
[directed, details]
[directed, details, equicost]
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
Vértice único¶
[directed, details]
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
- Ejemplo:
Topología de manejo por el lado derecho desde el punto
con una distancia , detallada.
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)
Múltiples vértices¶
[directed, details, equicost]
(seq, depth, start_vid, pred, node, edge, cost, agg_cost)
- Ejemplo:
Desde el punto
y el vértice dentro de una distancia de conequicost
en un grafo dirigido
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)
Parámetros¶
Columna |
Tipo |
Descripción |
---|---|---|
|
SQL de aristas como se describe a continuación |
|
|
SQL de puntos como se describe abajo |
|
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. |
Lado de manejo |
|
|
Donde:
- ENTEROS:
SMALLINT, INTEGER, BIGINT
Parámetros opcionales¶
Columna |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
|
|
|
Parámetros opcionales para Con puntos¶
Parámetro |
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
SQL de puntos¶
Parámetro |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
ENTEROS |
valor |
Identificador del punto.
|
|
ENTEROS |
Identificador de la arista «más cercana» al punto. |
|
|
FLOTANTES |
El valor en <0,1> que indica la posición relativa desde el primer punto de la arista. |
|
|
|
|
Valor en [
|
Donde:
- ENTEROS:
SMALLINT
,INTEGER
,BIGINT
- FLOTANTES:
SMALLINT
,INTEGER
,BIGINT
,REAL
,FLOAT
Columnas de resultados¶
Regresa el conjunto de (seq, depth, start_vid, pred, node, edge, cost, agg_cost)
Parámetro |
Tipo |
Descripción |
---|---|---|
|
|
Valor secuencial a partir de |
|
|
Profundidad del
|
|
|
Identificador del vértice raíz. |
|
|
Presdecesor de
|
|
|
Identificador del |
|
|
Identificador del
|
|
|
Costo por recorrer |
|
|
Costo agregado desde |
Ejemplos Adicionales¶
Usar pgr_findCloseEdges en el SQL de puntos.¶
Encontrar la distancia de manejo de las dos ubicaciones más cercanas al grafo del punto (2.8, 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)
El punto
corresponde a la arista más cercana al punto (2.9, 1.8).El punto
corresponde a la segunda arista más cercana al punto (2.9, 1.8).
Lado de manejo no importa¶
Desde el punto
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)
Ver también¶
Índices y tablas