Archivo por meses: marzo 2016

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

 

En esta serie de artículos sobre Pgrouting muestro el funcionamiento básico de esta biblioteca de rutas que trabaja sobre PostGIS.

Trato de actualizar el capítulo F.11 del libro de PostGIS, que al utilizar la versión anterior de pgrouting se ha quedado obsoleto.

Este material ha sido realizado por José Carlos Martínez y se publica mediante licencia Creative Commons cc_byncsa


Utilización de datos OSM

Los datos OSM por su naturaleza y por ser datos cartográficos libres son ideales para utilizarlos en programas de cálculo de rutas. En el apartado F 10, pág. 301 se estudió como importar datos OSM a PostGIS utilizando los cargadores osm2pgsql y osmosis.

También acabamos de ver que la función pgr_createTopology de pgrouting crea topología de red de una capa lineal, siempre que no existan intersecciones entre los tramos (ver pág. 309), y es precisamente esta condición la que no cumple los datos OSM. Efectivamente un tramo (way) OSM puede estar formado por más de dos nodos, donde los nodos intermedios pueden formar parte de otros tramos, por lo tanto es necesario partir dichos tramos para que únicamente sus nodos inicial y final sean los que conectan con otros tramos.

La figura siguiente (izquierda) muestra como en la cartografía OSM importada con oms2pgsql los tramos lineales OSM (ways) se cruzan entre sí sin crear nodos en las intersecciones, por el contrario la cartografía de la figura de la derecha muestra como la cartografía OSM importada con osm2pgrouting ha partido dichos tramos lineales creando nuevos registros en la tabla. Los dos tramos lineales (2 filas) de la figura de la izquierda (tramos resaltados) se han transformado en 9 tramos lineales (9 filas) en la figura de la derecha.

pgrouting5

Nodificación de cartografía OSM

Osm2pgrouting

El comando de utilidad osm2pgrouting[1] se puede instalar desde repositorios de terceros en distribuciones Ubuntu o mediante paquetes rpm para distribuciones Fedora. En MS Windows este comando se distribuye ya de forma oficial con la instalación de PostGIS. En otras distribuciones de Linux así como para obtener una versión más reciente puede ser necesaria su compilación a partir del código fuente.

Osm2pgrouting se ejecuta desde línea de comandos en una terminal del sistema. Las opciones del comando son:

  • file <fichero osm>: Nombre del fichero xml OSM a importar.
  • conf <fichero de configuración>: Ruta al archivo de configuración de osm2pgrouting. Generalmente este archivo es xml y se distribuye al instalar osm2pgrouting.
  • –skipnodes
    : Si es true no importa los nodos OSM.
  • clean
    : Elimina las tablas instaladas en un proceso de osm2pgrouting

 Opciones de conexión a PostgreSQL:

  • d <base de datos>: Nombre de la base de datos en la cual cargar las capas OSM.
  • u <usuario>: Usuario de la base de datos.
  • passwd <contraseña>: Contraseña de la conexión a la base de datos.
  • h <host>: Host de la máquina donde está el servidor de PostgreSQL. Por defecto es 127.0.0.1.
  • p <puerto>: Número de puerto para la conexión. Por defecto es 5432.