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
Soporte
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 bordes debe ser analizada debe contener una columna de origen y una columna de destino llena con los identificadores de los vértices de los segmentos y los vértices correspondientes de la tabla <edge_table>_vertices_pgr que almacena la información de los vértices.
text pgr_analyzeOneWay(geom_table text,
text[] s_in_rules, text[] s_out_rules,
text[] t_in_rules, text[] t_out_rules,
text oneway='oneway', text source='source', text target='target',
boolean two_way_if_null=true);
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 es oneway . |
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 . |
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 como en los siguientes ejemplos: pgr_createVerticesTable o pgr_createTopology
La función devuelve:
OK
Cuando el análisis ha terminado.ein
y eout
.FAIL
cuando el análisis no se completó debido a un error.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. |
SELECT pgr_analyzeOneWay('edge_table',
ARRAY['', 'B', 'TF'],
ARRAY['', 'B', 'FT'],
ARRAY['', 'B', 'FT'],
ARRAY['', 'B', 'TF'],
oneway:='dir');
NOTICE: PROCESSING:
NOTICE: pgr_analyzeOneway('edge_table','{"",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)
Las consultas utilizan la red Datos Muestra .
Índices y tablas