Supported versions:
pgr_withPointsCostMatrix - propuesto¶
pgr_withPointsCostMatrix
- Calcula la ruta más corta y devuelve solo el costo agregado de las rutas más cortas encontradas, para la combinación de puntos dados.
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¶
TBD
Firmas¶
Resumen
pgr_withPointsCostMatrix(edges_sql, points_sql, start_vids [, directed] [, driving_side])
RETURNS SET OF (start_vid, end_vid, agg_cost)
Nota
No hay identificador de details, a diferencia de los otros miembros de la familia de funciones withPoints.
Uso de valores predeterminados
- La firma mínima:
Es 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.
pgr_withPointsCostMatrix(edges_sql, points_sql, start_vid)
RETURNS SET OF (start_vid, end_vid, agg_cost)
- Ejemplo
Matriz de costos para puntos \(\{1, 6\}\) y vértices \(\{3, 6\}\) en un grafo dirigido
SELECT * FROM pgr_withPointsCostMatrix(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
'SELECT pid, edge_id, fraction from pointsOfInterest',
array[-1, 3, 6, -6]);
start_vid | end_vid | agg_cost
-----------+---------+----------
-6 | -1 | 1.3
-6 | 3 | 4.3
-6 | 6 | 1.3
-1 | -6 | 1.3
-1 | 3 | 5.6
-1 | 6 | 2.6
3 | -6 | 1.7
3 | -1 | 1.6
3 | 6 | 1
6 | -6 | 1.3
6 | -1 | 2.6
6 | 3 | 3
(12 rows)
Firma completa¶
pgr_withPointsCostMatrix(edges_sql, points_sql, start_vids,
directed:=true, driving_side:='b')
RETURNS SET OF (start_vid, end_vid, agg_cost)
- Ejemplo
Matriz de costos para puntos \(\{1, 6\}\) y vértices \(\{3, 6\}\) en un grafo no dirigido
Devolver una matriz de costes simétrica
Uso del valor predeterminado side en la consulta points_sql
Usando el valor predeterminado driving_side
SELECT * FROM pgr_withPointsCostMatrix(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
'SELECT pid, edge_id, fraction from pointsOfInterest',
array[-1, 3, 6, -6], directed := false);
start_vid | end_vid | agg_cost
-----------+---------+----------
-6 | -1 | 1.3
-6 | 3 | 1.7
-6 | 6 | 1.3
-1 | -6 | 1.3
-1 | 3 | 1.6
-1 | 6 | 2.6
3 | -6 | 1.7
3 | -1 | 1.6
3 | 6 | 1
6 | -6 | 1.3
6 | -1 | 2.6
6 | 3 | 1
(12 rows)
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_vids |
|
Arreglo de identificadores de vértices iniciales. Cuando es negativo: es el pid de un punto. |
dirigido |
|
(opcional). En caso de |
driving_side |
|
|
Devuelve SET OF (start_vid, end_vid, agg_cost)
Columna |
Tipo |
Descripción |
---|---|---|
start_vid |
|
Identificador del vértice inicial. |
end_vid |
|
Identificador del vértice final. |
agg_cost |
|
Coste agregado 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
Ejemplos Adicionales¶
- Ejemplo
pgr_TSP usando
pgr_withPointsCostMatrix
para puntos \(\{1, 6\}\) y vértices \(\{3, 6\}\) en un grafo no dirigido
SELECT * FROM pgr_TSP(
$$
SELECT * FROM pgr_withPointsCostMatrix(
'SELECT id, source, target, cost, reverse_cost FROM edge_table ORDER BY id',
'SELECT pid, edge_id, fraction from pointsOfInterest',
array[-1, 3, 6, -6], directed := false);
$$,
randomize := false
);
seq | node | cost | agg_cost
-----+------+------+----------
1 | -6 | 0 | 0
2 | -1 | 1.3 | 1.3
3 | 3 | 1.6 | 2.9
4 | 6 | 1 | 3.9
5 | -6 | 1.3 | 5.2
(5 rows)
Ver también¶
Red de sampledata.
Índices y tablas