Supported versions:
pgr_withPointsDD - Propuesto¶
pgr_withPointsDD
- Devuelve la distancia de conducción desde un punto de partida.
Advertencia
Funciones propuestas para el próximo lanzamineto.
No están oficialmente en la versión actual.
Es probable que oficialmente formen parte del próximo lanzamiento:
Las funciones hacen uso de ANY-INTEGER y ANY-NUMERICAL
Es posible que el nombre no cambie. (Pero todavía puede)
Es posible que la firma no cambie. (Pero todavía puede)
Es posible que la funcionalidad no cambie. (Pero todavía puede)
Se han hecho pruebas de pgTap. Pero tal vez necesite 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¶
Resumen
pgr_withPointsDD(edges_sql, points_sql, from_vids, distance [, directed] [, driving_side] [, details] [, equicost])
RETURNS SET OF (seq, node, edge, cost, agg_cost)
Uso de valores predeterminados
Para un grafo dirigido.
Ambos lados de conducción se establecen como b. Así que llegar/partir hacia/desde el o los puntos, puede ser en cualquier dirección.
No se proporcionan detalles sobre la distancia de otros puntos de la consulta.
pgr_withPointsDD(edges_sql, points_sql, start_vid, distance)
RETURNS SET OF (seq, node, edge, cost, agg_cost)
- Ejemplo
Desde el punto \(1\) with \(agg\_cost <= 3.8\)
Para un grafo dirigido.
Ambos lados de conducción se establecen como b. Así que llegar/partir hacia/desde el o los puntos, puede ser en cualquier dirección.
No se proporcionan detalles sobre la distancia de otros puntos de la consulta.
SELECT * FROM pgr_withPointsDD(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
'SELECT pid, edge_id, fraction, side from pointsOfInterest',
-1, 3.8);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | -1 | -1 | 0 | 0
2 | 1 | 1 | 0.4 | 0.4
3 | 2 | 1 | 0.6 | 0.6
4 | 5 | 4 | 1 | 1.6
5 | 6 | 8 | 1 | 2.6
6 | 8 | 7 | 1 | 2.6
7 | 10 | 10 | 1 | 2.6
8 | 7 | 6 | 1 | 3.6
9 | 9 | 9 | 1 | 3.6
10 | 11 | 11 | 1 | 3.6
11 | 13 | 14 | 1 | 3.6
(11 rows)
Un solo vértice¶
Encuentra la distancia de conducción en función de la configuración de los parámetros opcionales.
pgr_withPointsDD(edges_sql, points_sql, from_vid, distance [, directed] [, driving_side] [, details])
RETURNS SET OF (seq, node, edge, cost, agg_cost)
- Ejemplo
Topología de conducción del lado derecho, desde el punto \(1\) con \(agg\_cost <= 3.8\)
SELECT * FROM pgr_withPointsDD(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
'SELECT pid, edge_id, fraction, side from pointsOfInterest',
-1, 3.8,
driving_side := 'r',
details := true);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | -1 | -1 | 0 | 0
2 | 1 | 1 | 0.4 | 0.4
3 | 2 | 1 | 1 | 1.4
4 | -6 | 4 | 0.7 | 2.1
5 | 5 | 4 | 0.3 | 2.4
6 | 6 | 8 | 1 | 3.4
7 | 8 | 7 | 1 | 3.4
8 | 10 | 10 | 1 | 3.4
(8 rows)
Múltiples vértices¶
Encuentra la distancia de conducción en función de la configuración de los parámetros opcionales.
pgr_withPointsDD(edges_sql, points_sql, from_vids, distance [, directed] [, driving_side] [, details] [, equicost])
RETURNS SET OF (seq, node, edge, cost, agg_cost)
Parámetros¶
Parámetro |
Tipo |
Descripción |
---|---|---|
edges_sql |
|
Consulta de aristas SQL como se describió anteriormente. |
points_sql |
|
Consulta SQL de puntos como se describe arriba. |
start_vid |
|
Id de punto de partida |
distancia |
|
Distancia desde el start_pid |
dirigido |
|
(opcional). En caso de |
driving_side |
|
|
detalles |
|
(opcional). En caso de |
equicost |
|
(opcional). En caso de |
Consulta interna¶
Columna |
Tipo |
Valores predeterminados |
Descripción |
---|---|---|---|
id |
|
Identificador de la arista. |
|
origen |
|
Identificador del primer punto final en el vértice de la arista. |
|
objetivo |
|
Identificador del segundo punto final en el vértice de la arista. |
|
cost |
|
Peso de la arista (source, target)
|
|
reverse_cost |
|
-1 |
Peso de la arista (target, source),
|
Donde:
- ANY-INTEGER
SMALLINT, INTEGER, BIGINT
- ANY-NUMERICAL
SMALLINT, INTEGER, BIGINT, REAL, FLOAT
Descripción de la consulta SSQL de Puntos
- points_sql
Una consulta SQL, que debe regresar un conjunto de filas con las siguientes columnas:
Columna |
Tipo |
Descripción |
---|---|---|
pid |
|
(opcional) Identificador del punto.
|
edge_id |
|
Identificador de la arista «más cercano» al punto. |
fraction |
|
El valor en <0,1> que indica la posición relativa desde el primer punto final de la arista. |
side |
|
(opcional) Valor en [“b”, “r”, “l”, NULL] que indica si el punto es:
|
Donde:
- ANY-INTEGER
smallint, int, bigint
- ANY-NUMERICAL
smallint, int, bigint, real, float
Columnas de Resultados¶
Columna |
Tipo |
Descripción |
---|---|---|
seq |
|
secuencia de filas. |
node |
|
Identificador del nodo dentro de la distancia de |
edge |
|
|
cost |
|
|
agg_cost |
|
|
Ejemplos Adicionales¶
Ejemplos 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
- Ejemplo
Topología de conducción del lado izquierdo desde el punto \(1\) con \(agg\_cost <= 3.8\), detallada
SELECT * FROM pgr_withPointsDD(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
'SELECT pid, edge_id, fraction, side from pointsOfInterest',
-1, 3.8,
driving_side := 'l',
details := true);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | -1 | -1 | 0 | 0
2 | 2 | 1 | 0.6 | 0.6
3 | -6 | 4 | 0.7 | 1.3
4 | 5 | 4 | 0.3 | 1.6
5 | 1 | 1 | 1 | 1.6
6 | 6 | 8 | 1 | 2.6
7 | 8 | 7 | 1 | 2.6
8 | 10 | 10 | 1 | 2.6
9 | -3 | 12 | 0.6 | 3.2
10 | -4 | 6 | 0.7 | 3.3
11 | 7 | 6 | 0.3 | 3.6
12 | 9 | 9 | 1 | 3.6
13 | 11 | 11 | 1 | 3.6
14 | 13 | 14 | 1 | 3.6
(14 rows)
- Ejemplo
Desde el punto \(1\) with \(agg\_cost <= 3.8\), no importa el lado de conducción
SELECT * FROM pgr_withPointsDD(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
'SELECT pid, edge_id, fraction, side from pointsOfInterest',
-1, 3.8,
driving_side := 'b',
details := true);
seq | node | edge | cost | agg_cost
-----+------+------+------+----------
1 | -1 | -1 | 0 | 0
2 | 1 | 1 | 0.4 | 0.4
3 | 2 | 1 | 0.6 | 0.6
4 | -6 | 4 | 0.7 | 1.3
5 | 5 | 4 | 0.3 | 1.6
6 | 6 | 8 | 1 | 2.6
7 | 8 | 7 | 1 | 2.6
8 | 10 | 10 | 1 | 2.6
9 | -3 | 12 | 0.6 | 3.2
10 | -4 | 6 | 0.7 | 3.3
11 | 7 | 6 | 0.3 | 3.6
12 | 9 | 9 | 1 | 3.6
13 | 11 | 11 | 1 | 3.6
14 | 13 | 14 | 1 | 3.6
(14 rows)
Las consultas utilizan la red Datos Muestra .
Ver también¶
pgr_drivingDistance - Distancia de conducción usando dijkstra.
pgr_alphaShape - Cálculo de la forma alfa.
Índices y tablas