pgRouting Manual (2.0.0)

pgr_createVerticesTable

«  pgr_createTopology   ::   Contents   ::   pgr_analyzeGraph  »


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

An error would occur when the arguments are not given in the appropriate order: In this example, the column source column source of the table mytable is passed to the function as the geometry column, and the geometry column the_geom is passed to the function as the source column.
SELECT  pgr_createVerticesTable('edge_table','source','the_geom','target');

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

An error would occur when the arguments are not given in the appropriate order: In this example, the column src of the table mytable is passed to the function as the geometry column, and the geometry column mygeom is passed to the function as the source column.
SELECT  pgr_createVerticesTable('mytable','src','mygeom','tgt');

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

«  pgr_createTopology   ::   Contents   ::   pgr_analyzeGraph  »