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

Antes de realizar la importación hay que localizar el fichero de configuración de osm2pgrouting. La distribución de osm2pgrouting incluye un fichero de configuración llamado mapconfig.xml ya configurado que conviene localizar en nuestro disco duro, generalmente se encontrará en el directorio de instalación de osm2pgrouting (en MS Windows se encontrará dentro el directorio de instalación de PostgreSQL, ej: c:\PostgreSQL\9.5\share\mapconfig.xml).

Osm2pgrouting solo importará aquellos objetos ways (tramos) OSM cuyas etiquetas aparezcan definidas en mapconfig.xml, por defecto este fichero importa únicamente aquella información OSM relativa a los viales. En la wiki de OSM aparecen varios artículos[1] [2] y [3] con información sobre las etiquetas utilizables en aplicaciones de routing.

La sentencia de importación a la base de datos routing1 quedaría:

consola> osm2pgrouting --files "c:/tmp/map.osm" 
   --conf "c:/PostgreSQL/9.5/share/mapconfig.xml" 
   --skipnodes false --clean true 
   -d routing1 -u postgres --passwd ponercontraseña  

 

El fichero map.osm pertenece a centro urbano de Valencia (España) y se encuentra en los datos de esta publicación. El lector puede obtener si lo desea otra zona de cartografía directamente de la web de OSM[4] (seleccionar zona y presionar botón exportar).

Tras la ejecución se nos informará por consola que los 8008 ways cargados, se han partido en 21188 tramos. Estas cantidades pueden varias en función de la versión de osm2pgrouting utilizada.

Aparecerán cuatro nuevas tablas, las tablas classes y types almacenan información sobre las etiquetas OSM (osm2pgrouting no utiliza el tipo hstore de PostgreSQL). La tabla nodes contiene las coordenadas latitud y longitud de los nodos (WGS 84), y la tabla ways contiene los nuevos tramos lineales tras el proceso de partición de los originales OSM.

Pgrouting nos evita mucho trabajo porque:

  • Crea nodos en las intersecciones de la red OSM calculando y partiendo los tramos lineales adecuadamente.
  • Importa únicamente (fichero xml) la cartografía OSM necesaria aplicando filtros de etiquetas.
  • Añade a la tabla los campos adecuados para utilizar las funciones de pgrouting, como x1, y1, x2, y2, length, cost, reverse_cost, source y target. Aunque algunos de ellos se deben rellenar tras la importación por el usuario.
  • Calcula en función de la etiqueta ‘Highways->Oneway’ de OSM si los tramos son de dirección única, y en tal caso establece un ‘reverse_cost’ apropiado