pgr_createVerticesTable¶
Nombre¶
pgr_createVerticesTable para reconstruir la tabla de vértices basándose en la información de origen y de destino.
Sinopsis¶
La función devuelve:
- OK después de que se ha construido la tabla de vértices.
- FAIL cuando la tabla de vértices no se construyó debido a un error:
varchar pgr_createVerticesTable(text edge_table, text the_geom:='the_geom'
text source:='source',text target:='target',text rows_where:='true')
Descripción¶
Parámetros
La función para la reconstrucción de la tabla mesa vértices acepta los siguientes parámetros:
edge_table: | text La tabla de la red. (puede contener el nombre del esquema) |
---|---|
the_geom: | text nombre de la columna de la geometría en la tabla de la red. El valor por defecto es the_geom |
source: | id``Nombre de columna de origen de la tabla de red. El valor predeterminado es``source. |
target: | text El nombre de la columna del nodo de llegada del segmento. El valor por defecto es target. |
rows_where: | text condición para seleccionar un subconjunto o filas. Valor predeterminado es true para indicar todas las filas. |
Advertencia
La edge_table se verán afectados
Un índice será creado, si no existe, para acelerar el proceso para las columnas siguientes:
- the_geom
- source
- target
La función devuelve:
- OK después de que se ha construido la tabla de vértices.
- Crea una tabla de vértices: <edge_table>_vertices_pgr.
- Llena las columnas id y the_geom de la tabla de vértices basado en la información de la fuente y el destino.
- FAIL cuando la tabla de vértices no se construyó debido a un error:
- Una columna de la tabla de red requerida no se encuentra o no es del tipo apropiado.
- La condición no está bien formada.
- Los nombres de los campos de origen y destino son las mismos.
- No pudo determinarse el SRID de la geometría.
La tabla de vértices
La tabla de los vértices es un requerimiento de las funciones pgr_analyzeGraph y pgr_analyzeOneway.
La estructura de la tabla de los vértices es:
id: | bigint identificador del vértice. |
---|---|
cnt: | integer número de vértices en la edge_table que hacen referencia a este vértice. Ver pgr_analyzeGgraph. |
chk: | integer indicador que el vértice podría tener un problema. Ver pgr_analyzeGraph. |
ein: | integer número de vértices en la edge_table que hacen referencia a este vértice como entrante. Ver pgr_analyzeOneway. |
eout: | integer número de vértices en la edge_table que hacen referencia a este vértice como saliente. Ver pgr_analyzeOneway. |
the_geom: | geometry Valor de la geometría POINT del vértice. |
Historia
- Renombrado en la versión 2.0.0
Uso cuando las columnas de la tabla de borde coinciden con los valores por defecto:¶
La forma más sencilla de usar pgr_createVerticesTable es:
SELECT pgr_createVerticesTable('edge_table');
Cuando los argumentos se escriben en el orden descrito en los parámetros:
SELECT pgr_createVerticesTable('edge_table','the_geom','source','target');
Obtenemos el mismo resultado que la forma más sencilla de utilizar la función.
Advertencia
Cuando se utiliza la notación por nombre
No importa el orden de los parámetros:
SELECT pgr_createVerticesTable('edge_table',the_geom:='the_geom',source:='source',target:='target');
SELECT pgr_createVerticesTable('edge_table',source:='source',target:='target',the_geom:='the_geom');
Parámetros definidos con un valor por defecto pueden ser omitidos, mientras el valor coincida con el valor por defecto:
SELECT pgr_createVerticesTable('edge_table',source:='source');
Seleccionar filas utilizando el parámetro rows_where
La selección de filas basadas en el id.
SELECT pgr_createVerticesTable('edge_table',rows_where:='id < 10');
Seleccionar las filas donde la geometría está cerca de la geometría de la fila con id =5.
SELECT pgr_createVerticesTable('edge_table',rows_where:='the_geom && (select st_buffer(the_geom,0.5) FROM edge_table WHERE id=5)');
Seleccionar las filas donde la geometría está cerca de la geometría de la fila con``gid`` =100 de la tabla othertable.
DROP TABLE IF EXISTS otherTable;
CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5,2.5) AS other_geom) ;
SELECT pgr_createVerticesTable('edge_table',rows_where:='the_geom && (select st_buffer(othergeom,0.5) FROM otherTable WHERE gid=100)');
Uso cuando las columnas de la tabla de borde NO COINCIDEN con los valores por defecto:¶
Para la siguiente tabla
DROP TABLE IF EXISTS mytable;
CREATE TABLE mytable AS (SELECT id AS gid, the_geom AS mygeom,source AS src ,target AS tgt FROM edge_table) ;
Usando notación posicional:
Las discusiones deben recibir en el orden descrito en los parámetros:
SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt');
Advertencia
Cuando se utiliza la notación por nombre
No importa el orden de los parámetros:
SELECT pgr_createVerticesTable('mytable',the_geom:='mygeom',source:='src',target:='tgt');
SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom');
En este escenario omitir un parámetro crearía un error porque los valores predeterminados de los nombres de columna no coinciden con los nombres de columna de la tabla.
Seleccionar filas utilizando el parámetro rows_where
La selección de filas basadas en el gid.
SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt',rows_where:='gid < 10');
SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom',rows_where:='gid < 10');
Seleccionar las filas donde la geometría está cerca de la geometría de la fila con gid =5.
SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt',
rows_where:='the_geom && (SELECT st_buffer(mygeom,0.5) FROM mytable WHERE gid=5)');
SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom',
rows_where:='mygeom && (SELECT st_buffer(mygeom,0.5) FROM mytable WHERE id=5)');
Seleccionar las filas donde la geometría está cerca de la geometría de la fila con``gid`` =100 de la tabla othertable.
DROP TABLE IF EXISTS otherTable;
CREATE TABLE otherTable AS (SELECT 100 AS gid, st_point(2.5,2.5) AS other_geom) ;
SELECT pgr_createVerticesTable('mytable','mygeom','src','tgt',
rows_where:='the_geom && (SELECT st_buffer(othergeom,0.5) FROM otherTable WHERE gid=100)');
SELECT pgr_createVerticesTable('mytable',source:='src',target:='tgt',the_geom:='mygeom',
rows_where:='the_geom && (SELECT st_buffer(othergeom,0.5) FROM otherTable WHERE gid=100)');
Ejemplos¶
SELECT pgr_createVerticesTable('edge_table');
NOTICE: PROCESSING:
NOTICE: pgr_createVerticesTable('edge_table','the_geom','source','target','true')
NOTICE: Performing checks, pelase wait .....
NOTICE: Populating public.edge_table_vertices_pgr, please wait...
NOTICE: -----> VERTICES TABLE CREATED WITH 17 VERTICES
NOTICE: FOR 18 EDGES
NOTICE: Edges with NULL geometry,source or target: 0
NOTICE: Edges processed: 18
NOTICE: Vertices table for table public.edge_table is: public.edge_table_vertices_pgr
NOTICE: ----------------------------------------------
pgr_createVerticesTable
--------------------
OK
(1 row)
Las consultas usan la red de ejemplo Datos Muestra
Véase también¶
- Topología para Ruteo para tener una visión general de una topología de algoritmos de enrrutamiento.
- pgr_createTopology — Construye una topología de red basada en la información de geometría.
- pgr_analyzeGraph Para analizar los bordes y vértices de la tabla de bordes.
- pgr_analyzeOneway para analizar la direccionalidad de los bordes.