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
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.
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.