Rutas en PostGIS con la nueva versión de Pgrouting (parte 3/4): osm2pgrouting

Cálculo de la ruta

Primero calcularemos la tabla de vértices: Es importante recalcar que al ya tener los campos source y target calculados por osm2pgrouting no se necesita la función pgr_createTopology de pgrouting sino únicamente la función pgr_createVerticesTable que creará la tabla de vértices a partir de estos campos y no calculará de nuevo la numeración a partir de la coincidencia geométrica de los nodos.

routing1=# select pgr_createverticestable ('ways','the_geom',
  'source','target');

A falta de establecer si se desea restricciones de giro, ya tenemos los datos preparados para el cálculo de rutas.

Vamos a crear dos capas ruta1 y ruta2 que contendrán dos rutas calculadas con pgr_dijkstra: ruta1 utiliza un grafo indirecto y ruta2 uno directo.

Para obtener los nodos de inicio y final utilizaremos el nombre de calle. El nodo inicial coincidirá con un nodo de la calle ‘Ueshiba’ y el final con uno de ‘Pilota Valenciana’:

routing1=# select source from ways 
         where name like '%Ueshiba%' limit 1;
--------
  4721
routing1=# select source from ways 
         where name like '%Pilota Valenciana%' limit 1;
--------
  12662

Para el coste se utiliza los campos cost_s y reverse_cost_s (en caso de ruta 2). Notad como en el cálculo de la ruta1 se utiliza la función abs para obtener siempre el valor absoluto del coste, ya que osm2pgrouting lo puede poner en negativo en función de la dirección como se ha explicado anteriormente.

Para el coste se utiliza los campos cost_s y reverse_cost_s (en caso de ruta 2). Notad como en el cálculo de la ruta1 se utiliza la función abs para obtener siempre el valor absoluto del coste, ya que osm2pgrouting lo puede poner en negativo en función de la dirección como se ha explicado anteriormente.