Title Image

Blog

Importación de datos de OpenStreetMap en PostGIS

  |   Bases de datos, Cartografía, SIG

El proyecto OpenStreetMap  (OSM) es un proyecto mundial colaborativo cuyo objetivo es crear cartografía con una licencia libre que pueda ser descargada y utilizada para cualquier propósito con la única condición de citar su procedencia y que los productos derivados de ella dispongan de una licencia igual o compatible. Dado el carácter voluntario del proyecto, la cobertura de información varía por zonas. No obstante, su base de datos guarda una inmensa cantidad de geodatos que crece constantemente. Para hacernos una idea, a finales de febrero de 2013 el archivo Planet.osm que se genera semanalmente con los datos del proyecto  (todos los nodos, vías y relaciones que conforman el mapa) almacenado en formato XML contenía más de 370 GB sin comprimir.

En esta entrada vamos a explicar cómo importar los datos de un archivo .osm en una base de datos espacial PostGIS. Existen multiples maneras de realizarlo pero en este caso voy ha utilizar osm2pgsql.

Pestaña de exportación de datos en la web de OpenStreetMap

Pestaña de exportación de datos en la web de OpenStreetMap

Osm2pgsql es una aplicación sencilla de utilizar que importa los datos provenientes de OpenStreetMap (.osm) a una base de datos PostgreSQL/PostGIS. Realiza una conversión con pérdida, es decir, importa los atributos de cada elemento del mapa a partir las etiquetas que están definidas en el archivo de configuración default.style (por tanto solo importa los atributos recogidos en este archivo, no todos los disponibles) y convierte los nodos y vías a puntos, líneas y polígonos pero sin conservar las posibles relaciones entre ellos.

Proceso

Lo primero que debemos hacer es descargar los datos de nuestra zona de interés en formato OSM. Para ello hay dos opciones: ir a la la propia web del OSM y utilizar el menú exportar en donde obtendremos un archivo en formato OpenStreetMap XML, o utilizar el servicio que ofrece Geofabrik donde se puede descargar los archivos de datos agrupados por países. Yo utilizaré esta última opción.

La descarga la podemos realizar a través del navegador o directamente abriendo nuestra terminal o consola y escribiendo:

wget -O - http://download.geofabrik.de/osm/europe/spain.osm.bz2 bzcat > spain.osm

Una vez descargado nuestro archivo y descomprimido (esto último no es estrictamente necesario, como veremos más abajo), creamos en PostgreSQL una base de datos espacial que en nuestro caso llamaremos osm. Tras ello, es el momento de utilizar osm2pgsql.

De nuevo en el terminal ejecutamos el siguiente comando:

osm2pgsql --slim -H localhost -U postgres -d osm -E 4326 ./spain.osm

Donde:

    • –slim indica el modo de arranque del osm2pgsql (normal o slim). Muy recomendable para archivos grandes. Dejar por defecto.
    • -H localhost es la dirección IP del equipo donde está albergada de la base de datos: localhost.
    • -U postgres se refiere al usuario de la base de datos: postgres
    • -d osm especifica el nombre de la base de datos donde se volcarán los datos: osm
    • -E EPSG: 4326 es un parámetro opcional que he introducido para reproyectar los datos al sistema de coordenadas WGS84 Lat Lon.
    • ./spain.osm es el directorio y nombre del fichero donde osm2pgsql debe buscar el archivo .osm original. Este también puede estar en formato bzip2, por ejemplo miarchivo.osm.bz2, ya que osm2pgsql permite descomprimir al vuelo.

Podemos ver todas las opciones disponibles con:

osm2pgsql --help

Estos son los parámetros por defecto. Osm2pgsql exportará a nuestra base de datos PostGIS todos aquellos atributos o etiquetas referenciadas en el archivo default.style (en el caso de Ubuntu este se encuentra en el directorio /usr/share/osm2pgsql. Si trabajamos en Windows el archivo se suele hallar en C:/Program Files/share/default.style).

Los atributos de los datos OSM están formado por centenares de etiquetas o tags. Cada elemento gráfico se clasifica generalmente con al menos una de estas etiquetas. Osm2pgsql utilizará en la importación estos atributos para crear tantos campos como etiquetas queramos importar y que serán indicadas en el archivo default.style. Por supuesto, este archivo se puede abrir desde un editor de texto plano y modificarle para añadir o eliminar etiquetas en nuestra importación.

Etiquetas a importar con oms2psg

En este caso, se han añadido cuatro etiquetas más el archivo default.style referente a las velocidades máximas de circulación en carreteras y otras vías.

El tiempo de importación variará dependiendo del área elegida y la densidad de datos disponibles, así como las características del ordenador. A modo de orientación en un equipo Intel Core 2 Quad CPU Q6600 2.40GHz × 4 el proceso de importación para toda España con la reproyección a EPSG:4326 de los datos tardó unas 2:30 horas (a fecha de publicación de este artículo).

Una vez terminado el proceso, la base de datos estará poblada con la información geográfica importada y lista para ser utilizada. En la imagen inferior puedes ver la selección de todas las carreteras, caminos y sendas (highway=*) de España -excepto las Islas Canarias- tras realizar una consulta previa con Quantum GIS.

Consulta en QGIS de nuestra bases de datos PostGIS con la red de carreteras y caminos de España provenientes de OSM.

Consulta en QGIS de nuestra bases de datos PostGIS con la red de carreteras y caminos de España, excepto las Islas Canarias, provenientes de OSM.