Title Image

Blog

Cómo importar datos de OpenStreetMap en QGIS 2

  |   Cartografía, SIG

ten

OSM: Límites de velocidad en Berlín

Cartografía de OpenStreetMap mostrando los límites de velocidad en Berlín.

El objetivo de este artículo es mostrar cómo se puede importar datos de OpenStreetMap en QGIS. En el pasado ya publicamos otro para la versión de QGIS 1.x, explicando algunos trucos para sacarle mayor partido a las limitaciones del componente que existía entonces. Pero la cosa ha cambiado bastante con QGIS 2.0 (a mejor), y dado que es un tema recursivo dentro de los usuarios de Sistemas de Información Geográfica, voy a intentar explicarlo para esta nueva versión.

El día 9 de febrero de 2013 el identificador de nodos de la base de datos de OpenStreetMap alcanzó el número más alto que se puede almacenar como un entero de 32 bits. Debido a esto, los programas que hacían uso de la API de OpenStreetMap debían actualizarse para que fuesen compatible con identificadores de 64 bits o darían errores. A raíz de este cambio, y motivado por la antigüedad y el escaso mantenimiento del complemento para OpenStreetMap existente entonces en QGIS, se planteó un debate sobre el futuro de este plug-in de importación de datos.

Con la versión 2 de QGIS la importación de archivos OSM cambia radicalmente, integrándose como una funcionalidad en el núcleo del programa y pasando a almacenar los datos en una base de datos SQLite con SpatiaLite a través de GDAL. Este nuevo enfoque tiene una gran ventaja añadida y es que nos permite realizar una importación de los datos sin perdida, esto es, pudiendo elegir todos los atributos disponibles en la cartografía de OSM. Asimismo, la nueva funcionalidad ha pasado a ser de solo-lectura, por lo que ya no es posible editar cartografía de OpenStreetMap directamente desde QGIS, una función que muy poca gente utilizaba teniendo en cuenta que existen herramientas mucho más versátiles para este cometido como JOSM.

Descargar la cartografía de OpenStreetMap

[animate type=»fadeInDown» delay=»4″] [note] Omite este paso si ya tienes el archivo .osm  con la cartografía de OpenStreetMap.[/note] [/animate]

El primer paso es obtener una archivo .osm con la cartografía de OpenStreetMap que deseamos. Para ellos existen diferentes métodos: directamente desde el botón Exportar del visor del mapa, bien utilizando la XAPI, a partir de servicios de terceros (Geofabrik, Metro Extracts, Weogeo, etc),…. En nuestro caso descargaremos directamente los datos mediante QGIS a través de la API de OSM.

Para ello, lo primero que tenemos que hacer es abrir QGIS y fijar el sistema de coordenadas de la vista a WGS84 Lat Lon (EPSG:4326) y a continuación cargar una capa vectorial que nos permita definir el bounding box del área de descarga. En mi caso he abierto un shapefile del portal de Datos Abiertos Santander con las secciones censales del municipio. Dado que este está en un sistema de coordenadas diferente al de la vista (EPSG:25830) he reproyectado la capa al vuelo.

QGIS: Secciones censales de Santander

A continuación seleccionamos el menú Vectorial  OpenStreetMap → Descargar datos y escogemos la opción de elegir la extensión de descarga a partir de la capa vectorial que acabamos de abrir.

QGIS: Menú Descargar datos de OpenStreetMap
Es importante tener en cuenta que este método de descarga utiliza la API Overpass, por lo que tiene unos límites de ~300 MB. El tiempo de espera para comunicaciones con el servidor está definido en el menú de QGIS Configuración  Opciones  Red  Tiempo de espera de las solicitudes de red. Si la descarga falla lo primero es asegurarse de que este es lo suficientemente alto para llevar a cabo la conexión y que no nos encontremos detrás de un proxy.

QGIS: Definiendo el bbox para la descarga de datos desde OpenStreetMap

Para partes más grandes del mapa es recomendable descargarse los extractos de sitios como HOT Exports, bbbike.org o de los indicados anteriormente. Podemos consultar un listado de servicios que ofrecen extractos y su actualización en la propia wiki de OpenStreetMap.

Importar los datos

Como he mencionado, ahora QGIS hace uso de SQLite como contenedor para los datos OSM, por tanto el siguiente paso es importar todos esos datos en bruto descargados en formato XML a esta base de datos. Para ello seleccionamos el menú Vectorial  OpenStreetMap Importar topología de XML donde buscamos el archivo .osm descargado y elegimos el directorio donde se guardará la base de datos SpatiaLite. Mantendremos marcada la opción por defecto de crear una conexión a esa base de datos.

QGIS: Importando datos descargados de OpenStreetMap en una base de datos SQLite

Crear las capas y seleccionar los atributos

Por último ya solo resta definir las capas almacenadas en la base de datos SQLite que se utilizarán en nuestro proyecto en QGIS y singularizarlas de acuerdo a nuestras necesidades. Para ello de nuevo nos vamos al menú Vectorial  OpenStreetMap  Exportar topología a SpatiaLite donde seleccionamos la base de datos anteriormente creada, el tipo de geometría a exportar (punto, línea a polígono) y los atributos que queremos conservar. Para ver estos últimos deberemos pulsar sobre el botón Cargar de la base de datos. Junto a cada etiqueta se mostrará el número de elementos en la cartografía que poseen esos atributos, lo que nos facilita conocer la relevancia de este. Pulsamos Aceptar ¡y listo! Ya tenemos cargada la cartografía en nuestra vista.

QGIS: Cargando geometrías desde la base de datos SpatiaLite

Repetiremos este último paso para cada tipo de geometría que deseamos visualizar. Si abrimos la tabla atributos veremos que solo incluye las etiquetas que hemos seleccionado.

Ya solo queda asignarle un estilo a cada capa. Una vez las tengamos cargadas en el TOC la exportación a otros formatos ya es un paso trivial.

QGIS: Cartografía de OpenStreetMap con estilos de capas a lo Google Maps

Finalmente solo resta comentar que actualmente la funcionalidad de importación de datos OSM de QGIS tiene algunas limitaciones, tales como que no admite el formato binario .pbf de OpenStreetMap, no permite el filtrado de exportación por etiquetas y no soporta relaciones.

Cabe señalar que si nuestro objetivo es realizar una importación de datos de OSM para llevar a cabo una análisis de redes sobre SpatiaLite, esta tiene una serie de herramientas de importación especialmente orientadas para este fin, por lo que es más conveniente usar el proceso de importación que ya vimos en otro artículo sobre el cálculo de rutas óptimas con SpatiaLite y QGIS.