OpenStreetMap es una base de datos geográfica libre enorme. Aunque existen multitud de herramientras para extraer datos específicos de zonas concretas, como por ejemplo a través de la API de OverPass Turbo (del que hablamos aquí y aquí), en muchas ocasiones está muy limitado. En esta entrada os voy a mostrar cómo extraer datos de OpenStreetMap a partir de la base de datos en bruto de planet.osm
. Es decir, primero es decargarse la base de datos y después extraer de ella los datos que queramos para almacenarlos de un modo separado. ¡Vamos a por ello!
Quiero leer...
EXTRAER DATOS DE oPENSTREETmAP
Para extraer datos de OpenStreetMap, lo primero que tenemos que hacer es instalar Osmium. Osmium es un desarrollo libre con todo su código publicado en GitHub.
Instalar Osmium en Linux
En Linux es extraordinariamente sencillo instalar Osmium. Suele estar presente en los repositorios de las distribuciones Linux más populares. Si usas Linux Mint, simplemente es buscar el paquete osmium-tool
e instalarlo.
Si quieres instalarlo por la terminal simplemente ejecuta:
sudo apt-get install osmium-tool
Descargar datos de planet.osm
Una vez instalado Osmium, lo primero que tenemos que hacer es descargarnos la totalidad de los datos de OSM. Estos datos están disponibles en Planet OSM, y nos permite tener una base de datos de absolutamente todo lo que está en OSM. El formato del archivo es *.osm.pbf
. Cuando finaliza la descarga del archivo, tiene este nombre planet-211108.osm.pbf
, siempre empezando con planet seguido de la fecha de ese archivo (en este caso el 8 de noviembre de 2021).
Posteriormente, a través de Osmium, podremos extraer datos de OpenStreetMap contenidos en ese archivo descargado.
Sin embargo, es importante la siguiente reflexión. Es cierto que Osmium solo funciona con archivos descargados, no a través de API. Si estás interesado en una pequeña parte de la base de datos localizada geográficamente, os recomendamos utilizar otras herramientas, como la API de OverPass Turbo, que en nuestro blog lo hemos abordado en diferentes ocasiones (extraer datos de divisiones políticas, ver los datos de OSM en QGIS...). Pero esta API tiene limitaciones y puede saturarse y fallar cuando las consultas son amplias. Para consultas a la base de datos globales, como puede ser la extracción de etiquetas a nivel mundial, hay que hacerlo a través de Osmium y con un archivo descargado.
Lógicamente, el archivo descargado de Planet OSM es un archivo de muchos gigas. Así que armaros de paciencia en la descarga.
De todos modos es importante destacar que Osmium funciona con cualquier archivo que tenga formato *.osm.pbf
. Esto significa que también existen plataformas (como GeoFabrik) donde han fraccionado por continente y país la base de datos global para descargarnos solo una parte del planeta, en lugar del total, en formato *.osm.pbf
.
Extraer todos los datos de una etiqueta
Accedemos a la terminal y vamos a la carpeta donde tenemos el archivo descargado. Para poder extraer datos de OpenStreetMap de un modo completo y asignados a una sola etiqueta tenemos que correr el código que describimos a continuación. Como ejemplo, vamos a extraer todos los nodos de una etiqueta de OSM: historic=archaeological_site
.
osmium tags-filter planet-211108.osm.pbf n/historic=archaeological_site -o archaeology.osm.pbf
Vamos a describir punto a punto lo que hemos ejecutado anteriormente:
osmium
: ejecutamos el paqueteosmium
.tags_filter
permite usar la función deosmium
que extrae datos de etiquetas concretas.planet-211108.osm.pbf
llama al archivo descargado que se quiere usar para filtrar.n/historic=archaeological_site
indica que queremos descargarnos solo los nodos (n/
) que contengan la etiquetahistoric=archaeological_site
. Si queremos nodos, caminos y relaciones usaríamosnwr/
, de nodes, ways y relations.-o archaeology.osm.pbf
es el nombre del archivo final que contendrá los datos filtrados de la etiqueta seleccionada.
Abrir el archivo osm.pbf en JOSM
A continuación podemos abrir el archivo recién extraído en JOSM para ver los datos filtrados. Pero primero tenemos que instalarnos un plugin de JOSM para abrir archivo *.pbf
. Para ello nos vamos a las preferencias de JOSM, plugins, y buscamos pbf
y lo instalamos.
A continuación abrimos el archivo en JOSM en Archivo -> Abrir
. Y vemos el grandioso resultado:
Abrir el archivo osm.pbf en QGIS
En QGIS también es posible abrir el archivo *.osm.pbf
. Para ello tenemos que crear una capa vectorial siguiendo la ruta Capa -> Añadir capa -> Añadir capa vectorial
. En la ventana que aparece seleccionamos el archivo y lo abrimos, seleccionando todos los elementos.
Y aquí tenemos el resultado, donde se pueden ver todos los elementos cargados en el archivo.