pgr_withPointsDD
- Propuesto¶
pgr_withPointsDD
- Devuelve la distancia de conducción desde un punto de partida.
Advertencia
Funciones propuestas para la próxima versión mayor.
No están oficialmente en la versión actual.
Es probable que oficialmente formen parte del próximo lanzamiento:
Las funciones hacen uso de ENTEROS y FLOTANTES
Probablemente el nombre no cambie. (Pero todavía puede)
Es posible que la firma no cambie. (Pero todavía puede)
Probablemente la funcionalidad no cambie. (Pero todavía puede)
Se han hecho pruebas con pgTap. Pero tal vez se necesiten más.
Es posible que la documentación necesite un refinamiento.
Disponibilidad
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, driving_side, details]
[directed, driving_side, details, equicost]
(seq, [start_vid], node, edge, cost, agg_cost)
Vértice único¶
[directed, driving_side, details]
(seq, node, edge, cost, agg_cost)
- Ejemplo:
Topología de manejo por el lado derecho desde el punto \(1\) con una distancia \(3.3\), 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,
driving_side => 'r',
details => true);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | -1 | -1 | 0 | 0
2 | 5 | 1 | 0.4 | 0.4
3 | 6 | 1 | 1 | 1.4
4 | -6 | 4 | 0.7 | 2.1
5 | 7 | 4 | 0.3 | 2.4
(5 rows)
Múltiples vértices¶
[directed, driving_side, details, equicost]
(seq, start_vid, node, edge, cost, agg_cost)
- Ejemplo:
Desde el punto \(1\) y el vértice \(16\) dentro de una distancia de \(3.3\) con
equicost
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,
driving_side => 'l',
equicost => true);
seq | start_vid | node | edge | cost | agg_cost
-----+-----------+------+------+------+----------
1 | -1 | -1 | -1 | 0 | 0
2 | -1 | 6 | 1 | 0.6 | 0.6
3 | -1 | 7 | 4 | 1 | 1.6
4 | -1 | 5 | 1 | 1 | 1.6
5 | -1 | 3 | 7 | 1 | 2.6
6 | -1 | 8 | 10 | 1 | 2.6
7 | 16 | 16 | -1 | 0 | 0
8 | 16 | 11 | 9 | 1 | 1
9 | 16 | 15 | 16 | 1 | 1
10 | 16 | 17 | 15 | 1 | 1
11 | 16 | 10 | 3 | 1 | 2
12 | 16 | 12 | 11 | 1 | 2
(12 rows)
Parámetros¶
Columna |
Tipo |
Descripción |
---|---|---|
|
SQL de aristas como se describe a continuación |
|
|
SQL de puntos como se describe 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. |
Parámetros opcionales¶
Columna |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
|
|
|
Parámetros opcionales para Con puntos¶
Parámetro |
Tipo |
x Defecto |
Descripción |
---|---|---|---|
|
|
|
Valor en [
|
|
|
|
|
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 CONJUNTO DE (seq, [start_vid], 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¶
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,
driving_side => 'r',
details => true);
seq | start_vid | node | edge | cost | agg_cost
-----+-----------+------+------+------+----------
1 | -1 | -1 | -1 | 0 | 0
2 | -1 | 11 | 5 | 0.2 | 0.2
3 | -1 | 7 | 8 | 1 | 1.2
4 | -1 | 12 | 11 | 1 | 1.2
5 | -1 | 16 | 9 | 1 | 1.2
6 | -1 | -2 | 8 | 0.9 | 2.1
7 | -1 | 3 | 7 | 1 | 2.2
8 | -1 | 6 | 4 | 1 | 2.2
9 | -1 | 8 | 10 | 1 | 2.2
10 | -1 | 15 | 16 | 1 | 2.2
11 | -1 | 17 | 13 | 1 | 2.2
12 | -2 | -2 | -1 | 0 | 0
13 | -2 | 11 | 8 | 0.1 | 0.1
14 | -2 | 7 | 8 | 1 | 1.1
15 | -2 | 12 | 11 | 1 | 1.1
16 | -2 | 16 | 9 | 1 | 1.1
17 | -2 | 3 | 7 | 1 | 2.1
18 | -2 | 6 | 4 | 1 | 2.1
19 | -2 | 8 | 10 | 1 | 2.1
20 | -2 | 15 | 16 | 1 | 2.1
21 | -2 | 17 | 13 | 1 | 2.1
(21 rows)
Punto \(-1\) corresponde a la arista más cercana al punto (2.9, 1.8).
Punto \(-2\) corresponde a la segunda arista más cercana al punto (2.9, 1.8).
Lado de manejo no importa¶
Desde el punto \(1\) dentro de una distancia de \(3.3\), sin importar el lado de manejo, 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,
driving_side => 'b',
details => true);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | -1 | -1 | 0 | 0
2 | 5 | 1 | 0.4 | 0.4
3 | 6 | 1 | 0.6 | 0.6
4 | -6 | 4 | 0.7 | 1.3
5 | 7 | 4 | 0.3 | 1.6
6 | 3 | 7 | 1 | 2.6
7 | 8 | 10 | 1 | 2.6
8 | 11 | 8 | 1 | 2.6
9 | -3 | 12 | 0.6 | 3.2
10 | -4 | 6 | 0.7 | 3.3
(10 rows)
Ver también¶
Índices y tablas