La nueva capa ejes_noded dispone de 46841 tramos y la original de ejes tenía 10050.
La nueva tabla no incorpora los campos name y oneway que vamos a necesitar, pero sí incorpora un campo llamado old_id que hace referencia al gid de la tabla ejes y por lo tanto podemos relacionar ambas tablas. Para facilitar el análisis vamos a añadir estos dos campos y actualizarlos en la tabla ejes_noded.
routing1=# alter table ejes_noded add column name text; routing1=# alter table ejes_noded add column oneway integer; routing1=# update ejes_noded set name = ejes.name, oneway = ejes.oneway from ejes where ejes.gid = ejes_noded.old_id;
La tabla ejes_noded ya está preparada para utilizer las funciones de pgrouting. Como anteriormente, primero calcularemos los nodos con pgr_createTopology y luego procederemos al cálculo de una ruta.
routing1=# select pgr_createTopology('ejes_noded',0.01,'geom', 'id','source','target');
Agregamos los campos de los costes y calculamos los costes en función de la dirección del campo oneway. En este caso los costes van a ser las distancias en metros de los tramos.
routing1=# alter table ejes_noded add column cost double precision; routing1=# alter table ejes_noded add column reverse_cost double precision; routing1=# update ejes_noded set cost = case when oneway = -1 then –st_length(geom) else st_length(geom) end, reverse_cost = case when oneway = 1 then -st_length(geom) else st_length(geom) end;
Como estamos en la misma zona del núcleo de valencia, vamos a repetir una de las rutas realizadas anteriormente.
Calcula la longitud y número de tramos atravesados de la ruta más óptima utilizando el algoritmo A-Star, entre el nodo source de la calle ‘Pilota Valenciana’ al nodo target de la calle ‘Ueshiba’:
routing1=# select source from ejes_noded where name like '%Ueshiba%' limit 1; -------- 11367 routing1=# select source from ejes_noded where name like '%Pilota Valenciana%' limit 1; -------- 20259 routing1=# select sum(cost) as costetotal,count(*) as tramos from pgr_dijkstra ('select id, source, target, cost, reverse_cost from ejes_noded', 11367, 20259, true); costetotal | tramos ------------------+-------- 7008.06063721362 | 187
Como se aprecia la longitud total de la ruta es parecida a los 7267 m. del ejemplo previo.
Ver aquí la parte anterior de este taller
Ver aquí la parte primera de este taller.