pgr_analyzeOneWay¶
pgr_analyzeOneWay
— Analiza las calles de sentido unidireccional e identifica los segmentos volteados.
Esta función analiza las calles unidireccionales en un gráfico e identifica cualquier segmentos invertido.
Disponibilidad
Versión 2.0.0
Función oficial
Descripción¶
El análisis de segmentos que tienen un solo sentido es bastante simple, pero a la vez ser una herramienta poderosa para identificar algunos problemas potenciales que son creados al establecer la dirección de un segmento de la manera equivocada. Un nodo es un source si tiene bordes que salen de ese nodo y no hay bordes que entren a ese nodo. Por el contrario, un nodo es un`sink` si todos los bordes entran al nodo pero ninguno sale de ese nodo. Para un nodo source es lógicamente imposible existir porque ningún vehículo puede salir del nodo o si algún vehículo logró entrar en el nodo. Asimismo, si tuvieras un nodo sink tienes un número infinito de vehículos que se van acumulando en este nodo porque no pueden salir de el.
Así que ¿por qué nos importa si no es factibles? Si la dirección de un borde se revirtió por error podríamos generar exactamente en estas condiciones. Pensar en una carretera dividida y en el carril que va al norte un segmento o varios segmentos fueron introducidos al revés, o tal vez esto sucedió en una glorieta. El resultado sería potencialmente un nodo source y/o a sink node.
Así contando el número de aristas entrantes y salientes de cada nodo podemos identificar los nodos source y sink, así que usted puede mirar esas áreas de su red para hacer reparaciones o informar del problema a su proveedor de datos.
Pre-requisitos
La tabla de aristas a analizar debe contener una columna origen y una columna destino rellenas con identificadores de los vértices de los segmentos y la correspondiente tabla de vértices <edge_table>_vertices_pgr que almacena la información de los vértices.
Use pgr_createVerticesTable para crear la tabla de vértices.
Use pgr_createTopology para crear la topología y los vértices.
Firmas¶
[oneway, source, target, two_way_if_null]
TEXT
Parámetros¶
- edge_table:
text
La tabla de la red. (puede contener el nombre del esquema)- s_in_rules:
text[]
reglas de entrada del nodo inicial- s_out_rules:
text[]
reglas de salida del nodo inicial- t_in_rules:
text[]
reglas de entrada del nodo final- t_out_rules:
text[]
reglas de salida del nodo final- oneway:
text
El nombre de la columna del sentido. El valor por defecto esoneway
.- 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 destino del segmento. El valor por defecto estarget
.- two_way_if_null:
boolean
bandera para tratar los valores NULL de oneway como bidireccional. Valor predeterminado es``true``.
Nota
Es ampliamente recomendable usar la notación nombrada . Ver ejemplos en: pgr_createVerticesTable o pgr_createTopology.
La función devuelve:
OK
Cuando el análisis ha terminado.Utiliza la tabla de los vértices: <edge_table>_vertices_pgr.
Se llena completamente las columnas de la tabla de vértices
ein
yeout
.
FAIL
cuando el análisis no se completó debido a un error.No se encuentra en la tabla de los vértices.
Una columna de la tabla de red requerida no se encuentra o no es del tipo apropiado.
Los nombres de origen, destino o oneway son las mismos.
Las reglas se definen como un conjunto de textos que si encajan con el valor de oneway
se contara como true
para las condiciones de el origen o destino in o out .
La tabla de vértices
Los vértices pueden ser creados con pgr_createVerticesTable o pgr_createTopology
La estructura de la tabla de los vértices es:
- id:
bigint
identificador del vértice.- cnt:
integer
Número de vértices en edge_table que hacen referencia a este vértice. Consulte pgr_analyzeGgraph.- chk:
integer
Indicador de que el vértice podría tener un problema. Consulte pgr_analyzeGraph.- ein:
integer
número de vértices en la edge_table que hacen referencia a este vértice como entrante.- eout:
integer
número de vértices en la edge_table que hacen referencia a este vértice como saliente.- the_geom:
geometry
Valor de la geometría POINT del vértice.
Ejemplos Adicionales¶
ALTER TABLE edges ADD COLUMN dir TEXT;
ALTER TABLE
SELECT pgr_createTopology('edges', 0.001, 'geom');
NOTICE: PROCESSING:
NOTICE: pgr_createTopology('edges', 0.001, 'geom', 'id', 'source', 'target', rows_where := 'true', clean := f)
NOTICE: Performing checks, please wait .....
NOTICE: Creating Topology, Please wait...
NOTICE: -------------> TOPOLOGY CREATED FOR 0 edges
NOTICE: Rows with NULL geometry or NULL id: 0
NOTICE: Vertices table for table public.edges is: public.edges_vertices_pgr
NOTICE: ----------------------------------------------
pgr_createtopology
--------------------
OK
(1 row)
UPDATE edges SET
dir = CASE WHEN (cost>0 AND reverse_cost>0) THEN 'B' /* both ways */
WHEN (cost>0 AND reverse_cost<0) THEN 'FT' /* direction of the LINESSTRING */
WHEN (cost<0 AND reverse_cost>0) THEN 'TF' /* reverse direction of the LINESTRING */
ELSE '' END;
UPDATE 18
/* unknown */
SELECT pgr_analyzeOneWay('edges',
ARRAY['', 'B', 'TF'],
ARRAY['', 'B', 'FT'],
ARRAY['', 'B', 'FT'],
ARRAY['', 'B', 'TF'],
oneway:='dir');
NOTICE: PROCESSING:
NOTICE: pgr_analyzeOneway('edges','{"",B,TF}','{"",B,FT}','{"",B,FT}','{"",B,TF}','dir','source','target',t)
NOTICE: Analyzing graph for one way street errors.
NOTICE: Analysis 25% complete ...
NOTICE: Analysis 50% complete ...
NOTICE: Analysis 75% complete ...
NOTICE: Analysis 100% complete ...
NOTICE: Found 0 potential problems in directionality
pgr_analyzeoneway
-------------------
OK
(1 row)
Ver también¶
Índices y tablas