Cómo ejecutar geoprocesos sin abrir un programa SIG

En muchas ocasiones, tenemos que ejecutar geoprocesamientos sencillos como crear un buffer o reproyectar un shapefile que no necesariamente requieren de abrir un programa SIG o tener conocimientos de programación para ello.

La mayoría de los geoprocesamientos que usamos a diario pueden ejecutarse desde la línea de comandos de Windows usando GDAL/OGR. Esto resulta de gran utilidad a la hora de crear “batch processing” sin calentarnos la cabeza demasiado.

QUe es “GDAL/OGR”?

Para simplificar, podemos decir que GDAL/OGR es un conjunto de herramientas gratuitas geoespaciales para trabajar con datos ráster (GDAL) y vectoriales (OGR).

No tenemos que pensar que GDAL/OGR es algo diferente a los software GIS. En realidad la mayoría de los software GIS del mercado usan librerías GDAL/OGR, desde QGIS hasta ArcGIS. Para ejecutar OGR/GDAL desde la línea de comandos, necesitas tenerlo instalado en tu ordenador. Cualquiera de las siguientes instalaciones te podría servir:

Una vez conseguido esto, solo necesitaras ejecutar el programa desde la línea de comandos.

“OGR2OGR” desde la linea de comandos

Vamos a ver un ejemplo real. En este caso, vamos a crear un buffer usando ogr2ogr desde la línea de comandos. Recuerda que OGR se usa para geoprocesamientos vectoriales, por tanto no sirve para trabajar directamente con datos ráster.

Para el ejemplo, vamos a usar un SHP descargado del PNOA con la Cuenca Hidrográfica del Segura. Pero podrías usar el que desees:

Usando el SHP de la imagen superior, vamos a crear una serie de buffers y vamos a aprender a leer la tabla de atributos y usar sus categorías.

La sintaxis básica de cualquier comando OGR2OGR sería:

ogr2ogr -f “FORMATO” -sql “SQL” -dialect SQLite “Output.shp” “Input.shp”

Seguir el orden de la sintaxis es importante. Cuando usamos OGR2OGR, el archivo de salida debe nombrarse antes que el archivo de entrada, al contrario que en la mayoría de los programas que podemos ejecutar desde símbolo de sistema.

Crear un buffer con “st_buffer”

En el ejemplo que nos ocupa, vamos a usar la función ST_Buffer de PostGIS sobre el campo de geometría de nuestro SHP para crear el buffer. El objetivo es crear un buffer de 10 metros alrededor de la línea que representa nuestro cauce. El archivo de salida queremos que sea también en formato SHP:

  • Invocamos OGR2OGR desde nuestra instalación de QGIS: “C:\Program Files\QGIS 3.18\bin\ogr2ogr.exe”
  • Para definir el archivo de salida como SHP: -f “ESRI Shapefile”
  • La sintaxis SQL sería: -sql “select ST_Buffer(geometry, 10) from hi_redsecuencia_l_ES070”, donde hi_redsecuencia_l_ES070 es el nombre del SHP.
  • Por último, copiamos la ruta donde queremos el archivo de salida y la ruta del archivo de entrada.

Todo junto quedaría del siguiente modo:

“C:\Program Files\QGIS 3.18\bin\ogr2ogr.exe” -f “ESRI Shapefile” -sql “select ST_Buffer(geometry, 10) from hi_redsecuencia_l_ES070” -dialect SQLite “C:\Users\javi\Downloads\hi_redsecuencia_l_ES070_buf10m.shp” “C:\Users\javi\Downloads\hi_redsecuencia_l_ES070.shp”

Para ejecutar el comando, abre una ventana de símbolo de sistema y copia la sentencia. Después presiona intro. Ahora es el momento de comprobar los resultados. Abrimos QGIS o cualquier otro programa SIG que tengas instalado en tu ordenador. Ahora arrastra el archivo original y el archivo de salida. ¿Qué ha ocurrido?

Buffer de un archivo lineal en grados

No hemos obtenido el resultado que esperábamos. Esto se debe a que el archivo original se encuentra en WGS84, es decir, sus unidades están en grados decimales y no en metros. Para realizar la transformación a ETRS89 UTM zona 30 y poder operar en metros, tenemos dos opciones.

  • Realizar la transformación con QGIS
  • Realizar la transformación usando OGR2OGR al mismo tiempo que creamos el buffer

cambios de proyección: “ST_Transform”

Vamos a usar la segunda opción. Todo lo que necesitas es conocer el código EPSG de tu archivo de tu archivo de salida. Observa en el comando inferior la parte en negrita. Vamos a aplicar ST_Transform sobre la geometría al mismo tiempo que usamos ST_Buffer:

“C:\Program Files\QGIS 3.18\bin\ogr2ogr.exe” -f “ESRI Shapefile” -sql “select ST_Buffer(st_transform(geometry, 25830), 10) from hi_redsecuencia_l_ES070″ -dialect SQLite “C:\Users\javi\Downloads\hi_redsecuencia_l_ES070_25830_buf10m.shp” “C:\Users\javi\Downloads\hi_redsecuencia_l_ES070.shp

Buffer del shapefile que contiene la cuenca hidrográfica del segura

Ahora si hemos obtenido los resultados esperados. El buffer está ahora en metros y nuestro archivo de salida se ha transformado de WGS84 a ETRS89 Zona 30.

Vamos a ir un poco mas allá. Nuestro shapefile contiene una serie de cauces, que son ríos, ramblas, acequias, etc. ¿Podemos crear un buffer en ETRS89 solamente para los ríos?

“ogrinfo” para leer atributos de un Shp

Para ellos lo único que tenemos que hacer es comprobar si la categoría “Ríos” existe en nuestro SHP. Puedes leer la tabla de atributos desde QGIS o bien, puedes hacerlo usando OGRINFO.

Para esta segunda opción, usar el siguiente comando que te ayudará a leer todas las columnas (usamos el *) de una fila de la tabla de atributos (por ello usamos “limit 1”):

“C:\Program Files\QGIS 3.18\bin\ogrinfo.exe” “C:\Users\anton\Downloads\hi_redsecuencia_l_ES070.shp” -dialect sqlite -sql “select * from hi_redsecuencia_l_ES070 limit 1

En este caso, no vamos a crear ningún archivo de salida. Solamente queremos que nos muestre en la consola de símbolo de sistema los atributos de un único elemento del SHP de entrada. Observa que uno de los atributos se llama “nombre”. Parece un buen candidato para contener los nombre de los ríos, ramblas, arroyos, etc., por lo que es posible que nos indique los ríos. Vamos a comprobarlo con el siguiente comando:

“C:\Program Files\QGIS 3.18\bin\ogrinfo.exe” “C:\Users\anton\Downloads\hi_redsecuencia_l_ES070.shp” -dialect sqlite -sql “select distinct(nombre) from hi_redsecuencia_l_ES070

Lo que estamos indicando en el comando superior es que nos muestre todos los elementos DISTINTOS de la tabla de atributos para la columna “NOMBRE”:

la cláusula “where”

El campo nombre contiene lo que buscamos. Vamos ahora a usarlo para filtrar todos los ríos de nuestra tabla de atributos. Vamos a crear un nuevo SHP solamente para los Ríos, con un buffer de 10 metros y para ellos vamos a buscar todos aquellos elementos de la tabla de atributos que contienen la palabra “Ríos” en alguna de su columna “NOMBRE” con “WHERE”:

“C:\Program Files\QGIS 3.18\bin\ogr2ogr.exe” -f “ESRI Shapefile” -sql “select ST_Buffer(st_transform(geometry, 25830), 10) from hi_redsecuencia_l_ES070 where nombre like ‘Río%'” -dialect SQLite “C:\Users\javi\Downloads\hi_redsecuencia_l_ES070_25830_buf10m_rios.shp” “C:\Users\javi\Downloads\hi_redsecuencia_l_ES070.shp” -progress

Buffer de 10 metros solo para los Ríos

El nuevo SHP creado será más pequeño que el buffer original, ya que contiene solamente los Ríos.

Por último, vamos a crear un buffer con distintas dimensiones acorde a su categoría. Por ejemplo, imagina que necesitas tener un polígono con los cauces donde los Ríos tengan 10m de buffer y las ramblas 5 metros. Para esto, podemos usar UNION dentro de nuestra sentencia SQL.

fusionar elementos con “union”

Lo único que necesitas hacer es crear un buffer para cada categoría repitiendo el comando SQL, una vez para Ríos y otra para las ramblas:

“C:\Program Files\QGIS 3.18\bin\ogr2ogr.exe” -f “ESRI Shapefile” -sql “select ST_Buffer(st_transform(geometry, 25830), 10) from hi_redsecuencia_l_ES070 where nombre like ‘Río%’ UNION select ST_Buffer(st_transform(geometry, 25830), 5) from hi_redsecuencia_l_ES070 where nombre like ‘Rambla%'” -dialect SQLite “C:\Users\anton\Downloads\hi_redsecuencia_l_ES070_25830_rios10m_y_ramblas5m.shp” “C:\Users\anton\Downloads\hi_redsecuencia_l_ES070.shp” -progress

Como resultado obtendrás un polígomo como el que se muestra a continuación:

Buffer 10 metros para Ríos y de 5 metros para la Ramblas

Conclusión

Como habrás podido comprobar, hemos sido capaces de crear distintos buffers a partir de un SHP usando OGR2OGR, sin necesidad de abrir un programa SIG.

Tener soltura con OGR2OGR te resultará muy útil en tu actividad profesional a la hora de crear scripts o concatenar procesos respetivos.

Hemos visto un ejemplo de cómo crear un buffer y transformar la proyección, pero OGR2OGR se puede usar también para:

  • Crear o modificar atributos
  • Transformar archivos (por ejemplo de SHP a SQLITE)
  • Importar y exportar datos a una base de datos
  • Realizar operaciones vectoriales (intersecciones, uniones, cambios de geometría, etc.)

Cómo convertir datos de OSM (Open Street Map) a Shapefile con QGIS

Los sistemas de información geográfica carecen de sentido si no disponemos de datos para trabajar con ellos. En muchas ocasiones, nos encontramos con que tenemos un proyecto o una idea y carecemos de fuentes de descarga de información para desarrollarla. Encontrar estas fuentes a veces resulta una actividad tediosa y fustraste.

En este post vamos a ver una manera de obtener datos en formato shapefile a partir de Open Street Map usando el complemento o plugin de QGIS llamado “OSMdownload”.

Antes de nada, si vas a realizar los pasos de este post, te recomiendo que le eches un vistazo a este otro post donde te explico cómo descargarte un complemento para QGIS llamado “Quick Terrain Services” que podrás usar para cargar mapas base en QGIS (entre ellos mapas base de OSM).

¿Qué es OSM?

OSM viene de las siglas en inglés “OpenStreetMap”. Se trata de un conjunto de datos open source del que se abastecen páginas web, aplicaciones móviles y distintos software (entre ellos QGIS).

OSM se mantiene gracias a una comunidad de personas dedicadas a la elbaoración de amapas que contribuye al mantenimiento y creación de todo tipo datos a lo largo del mundo, desde carrtereas y railes hasta el mapeo cafés o edificios públicos.

OSM Open Street Map Madrid
Ejemplo de vista de OSM en el Centro de Madrid

Descargar el complemento “OSMDownloader” para QGIS

El complemento OSMDownloader de QGIS es el que nos va a permitir descargar elementos en formato OSM a partir de Open Street Map. Como el resto de los complementos en QGIS, necesitamos acceder al menú de complementos para descargarlo, ya que no viene por defecto en nuestra instalación.

Para este ejemplo, vamos a usar QGIS 3.18 pero podrías usar cualquier otra versión que tengas instalada en tu ordenador. Dirígete al menú principal, en la parte superior y haz clic en complementos > administrar e instalar complementos.

Una vez que se abra la ventana de complementos, teclea “OSMdownload” en la barra de búsqueda y aségurate de que la opción “todos” está seleccionada. Después, haz clic en la parte inferior en “Instalar Complemento”

Gestor de complementos de QGIS

Una vez descargado el complementos, verás una herramienta nueva con forma de rectángulo en el menú principal, en la parte superior.

Herramienta para descargar datos de OSM mediante un rectángulo de selección

Usando OSMDOWNLOADER

Utilizar este complemento de QGIS es bastante sencillo. Para ello imaginemos que queremos obtener un callejero de la ciudad de Águilas. Los pasos serían:

  • Cargar un mapa base de OSM. En este caso, he obtado por usar el complemento de Quick Terrain Services
Cargar datos desde Quick Terrain Services
  • Buscar la zona que queremos descargar
  • Crear un AOI (área de interés) de la zona que queremos obtener datos usando OSMdownloader
AOI usando OSMDownloader
  • Seleccionar una carpeta de descarga. Observa que puedes marcar la casilla de “Load layer after download” para ver la información en QGIS sin necesidad de cargarla una vez descargada.
Selecciona una carpeta de descarga

Una vez descargados los datos, lo único que tenemos que hacer, es covertirlos a formato SHP. Para ello usa la herramienta de selección en QGIS y selecciona aquellos elementos que desees exportar como SHP (o cualquier otro formato!).

Datos descargados directamente de OSM

Cuando ya tengamos los elementos exportados en formato SHP, puedes recurrir a la simbología y superponerlos sobre Google Street Map para comprobar que todo es correcto. También puedes añadir un etiquetado con el nombre de las calles:

Callejero del centro de Aguilas (Murcia)

Como habras podido comprobar, es bastante sencillo obtener datasets de cualquier parte del mundo. Dependiendo del tamaño de la zona, el país o la ciudad, puede que tengas más o menos información disponible.

Por ejemplo, en este otro caso, he seleciconado una zona del Parque Natural de la Sierra de Guadarrama entre Madrid y Castilla León, y podemos ver que nos aparecen desde puntos de interés hasta senderos rurales:

Datos descargados de OSM de la Sierra de Guadarrama

Te animo a que trates de probar la herramienta en alguna zona de tu interés y así podrás comprobar qué datos tienes disponibles.

LiDAR PNOA

Como instalar el nuevo QGIS 3.18 con la funcionalidad de visualizar LiDAR

Durante el mes de Febrero, se ha lanzado una nueva versión de QGIS (3.18) con múltiples mejoras y extras, entre ellas la posibilidad de cargar nubes de puntos en formato LAZ o LAS directamente arrastrándolas a tu ventana de QGIS.

El programa utiliza librerías de entwine pdal combinadas con el software de QGIS para exprimir al máximo nuestros datos LiDAR. Por ahora se trata de una primera versión con escasa funcionalidad, pero es fácil imaginar su potencial unido a QGIS. El simple hecho de poder combinar vectores, rasters y nubes de puntos en la ventana de QGIS ya resulta de gran utilidad.

Sin embargo, parece que esta opción aun no está disponible para Windows cuando descargamos el instalador de QGIS directamente desde su página oficial. No obstante existe una solución temporal para esto que ha sido facilitada por Lutra Consulting, empresa que organizó el crowdfounding para incluir esta funcionalidad en QGIS, junto con North Road y Hobu.

Instalación

Para poder disfrutar por ahora de esta nueva funcionalidad, es necesario descargar el nuevo instalador de OSGEO4W que por ahora se encuentra en prueba. Pero ojo, si ya tienes OSGEO4W o QGIS instalado en tu ordenador y no deseas sobreescribir o modificar la instalación, entonces te recomiendo que a la hora de instalarlo, lo hagas en una ruta diferente.

Sigue los pasos para realizar la instalación. Durante el proceso no sólo podrás seleccionar la ruta de instalación si no que también podrás crear un acceso directo en el escritorio. La instalación puede tardar unos minutos y como con cualquier otro porgrama, es recomendable reiniciar el ordenador una vez finalizada.

Probando datos

Una vez hemos instalado QGIS 3.18, es el momento de ejecutar el programa. Para ello, dirígete a la ruta donde lo has instalado y busca la carpeta bin. Desde ella, busca el archivo ejecutable llamado “qgis-bin.exe” y haz doble clic en él. De esta manera te aseguras de ejecutar la versión que acabas de instalar y no otra versión que ya exista en tu PC.

Ahora simplemente arrastra una nube de puntos en formato LAS o LAZ a tu ventana de QGIS. Para este ejemplo, he descargado el bloque “PNOA_2016_MAD_426-4481_ORT-CLA-RGB.laz” a través del centro de descargas del CNIG.

Las nubes de puntos que descargamos del PNOA estan coloreadas usando ortofotos, por este motivo al cargarla se verá como en la siguiente captura de pantalla, coloreda por sus atributos RGB:

Bloque LiDAR visualizado en QGIS por RGB

Si lo deseas, puedes cargar también en QGIS una ortofoto que puedes conseguir del mismo buscador del CNIG y usarla como mapa base.

En QGIS, la nube de puntos se carga como otra capa cualquiera, es decir, como una capa vectorial o ráster. Por tanto, el sistema de coordenadas de referencia o su simbología se pueden modificar.

Para cambiar la simbología de la nube de puntos, haz doble clic en la capa LiDAR y busca la pestaña de simbología. Tendrás 4 opciones:

  • Extensión: Serían los límites del bloque
  • Atributos: Esta opción te permite mostrar la nube de puntos en base a sus campos escalares (intensidad, número de retorno, coordenadas, etc.
  • RGB: Si existe, es posible mostrar la nube de puntos por los colores con los que haya sido atribuída.
  • Clasificación: Generalmente, esta clasificación será responde a los estándares de la “American Society of Photogrametry and Remote Sensing

En este ejemplo he optado por colorear la nube de puntos en base a uno de sus atributos, en concreto la coordenada Z. Para ello simplemente selecciona “Attribute by Ramp” en las opciones de simbología y ha continuación, selecciona la opción de la coordenada Z. De forma automática se crea una rampa de colores en base al rango por alturas (en este caso alturas sobre el nivel del mar).

Nube de puntos superpuesta sobre Ortofoto. El LiDAR se muestra clasificado por alturas

Por el momento, no hay algoritmos nativos disponibles en QGIS 3.18 para modificar la nube de puntos o crear productos a partir de ella. Pero teniendo en cuenta que usa la librería de PDAL, es muy posible que próximas versiones incorporen distintas funcionalidades para generar, por ejemplo, modelos digitales del terreno a partir del LiDAR.

Mapas base en QGIS. Complemento Quick Map Services.

Los mapas base nos ayudan a crear un contexto en nuestros proyectos. Son una guía sobre la que crear o modificar nuestros archivos vectoriales y raster, además de ayudarnos a comprender mejor los datos con los que estamos trabajando.

Observa la imagen inferior, a la izquierda, tenemos un archivo vectorial de carreteras y a la derecha el mismo archivo con un mapa base satélite obtenido de Google. ¿Cuál te resulta más interesante?

Mapa de carreteras con y sin mapa base

En este post vamos a hablar de las ventajas del plugin Quick Map Services de QGIS para incorporar distintos mapas base.

Antes de comenzar con el complemento de Quick Map Services, es importante recordar que QGIS tiene sus propios proveedores y complementos de terceros para acceder a los servicios de mapas base. Los protocolos WMS y WMTS se implementan en el núcleo del programa.

Del mismo modo, es posible acceder a los mosaicos XYZ a través del controlador WMS escribiendo un archivo XML especial comprensible con GDAL. Sin embargo, esto no es conveniente, ya que se necesita recordar todas estas direcciones y lleva tiempo añadir los archivos. Puedes acceder a estos servicios desde el navegador, por defecto, deberías tener un callejero de Open Street Map:

Mapa base de OSM

La alternativa de la que se habla en este post es Quick Map Services. Un complemento para QGIS que te ayudará a disponer fácilmente de numerosos mapas base.

Quick Map Services

Este plugin o complemento de QGIS, desarrollado por NextGIS, es mi opción favorita a la hora de incorporar mapas base a nuestro workbench de QGIS. El complemento viene con mapas de numerosas fuentes:

  • Bing
  • Esri
  • Google
  • OSM
  • Y muchos más!

Sus principales ventajas son:

  • Incluye una lista de servicios que se van actualizando continuamente
  • Los mapas se añaden a nuestro proyecto con un solo clic
  • Es fácilmente ampliable agregando archivos ini

Para disfrutar de todos esos mapas, tienes que seguir los siguientes pasos:

  • Dirígete al menú complementos/plugins de QGIS
  • Desde la pestaña de “todos” busca “Quick Map Services”
  • Instala el complemento
  • Una vez instalado, verás que te aparece en el menú principal una bola del mundo con un símbolo + en su parte inferior derecha.
  • Haz clic en ella y después en “Settings”, “More services”, “Get Contributed Pack”
  • Ahora puedes disfrutar de todos estos mapas base:

Personalmente utilizo mucho las imágenes satélite de Google para dar contexto a mis proyectos. Pero también puedes disponer del típico mapa base de ESRI Gray Dark o de imágenes de Bing o incluso OSM.

Si de todos los mapas disponibles en el complemento, no encuentras uno que se ajuste a tus necesidades, siempre puedes probar suerte usando el buscador de Quick Map Services. Para ello, pincha de nuevo en el plugin y busca donde dice “Panel Search QMS” en la parte inferior. De forma alternativa, puedes pinchar en la bola del mundo con la lupa. Se abrirá una pestaña donde podrás incluir el nombre del mapa base que andas buscando.

Buscador QMS

Intenta utlizar paalabras clave como “water”, “earthquake”, “DEM”, etc. Por ejemplo, un mapa base muy interesante es éste elaborado por la NASA que te permite ver a nivel global la peligrosidad símismica medida por la velocidad punta de la onda en superficie:

mapa base de peligrosidad sísmica
Mapa base de peligrosidad sísmica

Observa que puedes combinar mapas base, por ejemplo en la imagen anterior, existe un mapa base de Google Satellite debajo del mapa base de peligrosidad sísmica.

Para terminar, os dejo con este mapa base un tanto vintage pero que me ha parecido muy interesante. Se trata de una imagen que emula un mapa pintado en acuarela. Para encontrarlo, simplemente escribe “water” en el buscador de “Search QMS” de tu complemento. Aparecerán además una serie de mapas base relacionados con el agua.

watercolor
Mapa base watercolor (acuarela)