Consultas Personalizadas¶
En general, los algoritmos de enrutamiento necesitan una consulta SQL que contienen uno o más de las siguientes columnas necesarias con el tipo preferido:
id: | int4 |
---|---|
source: | int4 |
target: | int4 |
cost: | float8 |
reverse_cost: | float8 |
x: | float8 |
y: | float8 |
x1: | float8 |
y1: | float8 |
x2: | float8 |
y2: | float8 |
Cuando el la tabla de bordes tiene las columnas mencionadas, pueden utilizarse las siguientes consultas SQL.
SELECT source, target, cost FROM edge_table;
SELECT id, source, target, cost FROM edge_table;
SELECT id, source, target, cost, x1, y1, x2, y2 ,reverse_cost FROM edge_table
Cuandola tabla de bordes tiene un nombre diferente para representar las columnas necesarias:
SELECT src as source, target, cost FROM othertable;
SELECT gid as id, src as source, target, cost FROM othertable;
SELECT gid as id, src as source, target, cost, fromX as x1, fromY as y1, toX as x2, toY as y2 ,Rcost as reverse_cost
FROM othertable;
Las funciones de topología utilizan los mismos nombres de columnas id, source y target de la tabla del bordes, los siguientes parámetros tienen como valor predeterminado:
id: | int4 Por defecto id |
---|---|
source: | int4 Por defecto source |
target: | int4 Por defecto target |
the_geom: | text Por defecto the_geom |
oneway: | text Por defecto oneway |
rows_where: | text Por defecto true para indicar todos los registros (esto no es una columna) |
Los siguientes parámetros no tienen un valor por defecto y cuando se usan tienen que insertarse en estricto orden:
edge_table: | text |
---|---|
tolerance: | float8 |
s_in_rules: | text[] |
s_out_rules: | text[] |
t_in_rules: | text[] |
t_out_rules: | text[] |
Cuando las columnas necesarias tienen los nombres por defecto se puede usar lo siguiente: (pgr_func es representar una función de topología)
pgr_func('edge_table') -- when tolerance is not requiered
pgr_func('edge_table',0.001) -- when tolerance is requiered
-- s_in_rule, s_out_rule, st_in_rules, t_out_rules are requiered
SELECT pgr_analyzeOneway('edge_table', ARRAY['', 'B', 'TF'], ARRAY['', 'B', 'FT'],
ARRAY['', 'B', 'FT'], ARRAY['', 'B', 'TF'])
Cuando las columnas necesarias no tienen los nombres por defecto se recomienda enormemente usar la notación con nombre.
pgr_func('othertable', id:='gid',source:='src',the_geom:='mygeom')
pgr_func('othertable',0.001,the_geom:='mygeom',id:='gid',source:='src')
SELECT pgr_analyzeOneway('othertable', ARRAY['', 'B', 'TF'], ARRAY['', 'B', 'FT'],
ARRAY['', 'B', 'FT'], ARRAY['', 'B', 'TF']
source:='src',oneway:='dir')