Rutas en PostGIS con la nueva versión de Pgrouting (parte 4/4): Nodificando una red

 

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 cartografía sin estructura de red

Si se desea utilizar cualquier capa de vías de comunicación o cualquier tipo de red que no se encuentre en formato OSM no se podrá utilizar el comando osm2pgrouting y si dicha cartografía no está estructurada según una topología de red (intersecciones en los cruces), será necesario nodificar la red. PAra ello pgrouting dispone del comando pgr_nodenetwork y que utilizaremos en este apartado. Tambíen y como solución alternativa podríamos utilizar los scripts que desarrollamos en el apartado E 2.4, pág. 270, ‘creación de nodos en las intersecciones’. En efecto, este script numera los nodos inicial y final de los tramos pero además parte los tramos lineales en los puntos de intersección con otros tramos, permitiendo utilizar cualquier cartografía con pgrouting.

En este apartado vamos a utilizar otro tipo de cartografía que presenta las siguientes características:

  • No tiene intersecciones en los cruces.
  • Está en coordenadas geográficas en WGS84.
  • Hay un campo llamado oneway el mismo contenido que el explicado en OSM.

Con un CRS en coordenadas geográficas cualquier análisis espacial o cálculo de la longitud de los tramos utilizando geometría plana es totalmente incorrecto y carece de sentido físico. Por lo tanto si se desea realizar análisis espacial con esta cartografía es necesario reproyectar nuestros datos a un CRS apropiado.

En el apartado anterior no hicimos dicha reproyección, debido a que osm2pgoruting tiene el detalle de calcular los campos length_m sobre el esferoide. Aun así, las coordenadas x1, y1, x2 e y2 utilizadas en algunos algoritmos de pgrouting vienen dadas en geográficas lo cual puede dar lugar a problemas.

Se podría estar tentado a proyectar los datos al CRS EPSG: 3857 o proyección esférica de mercator[1] que es precisamente la proyección que utilizan muchos de los programas que visualizan cartografía en la web (como Google Maps) y la que por ejemplo utiliza la herramienta osm2pgsql por defecto. En tal caso, aunque nos estaríamos acercando a la realidad aún se estaría cometiendo un error no despreciable para utilizar los datos OSM con pgrouting.

Como demostración vamos a calcular la longitud de un tramo entre dos puntos dentro del casco urbano de la ciudad de Valencia.