Interfaz de línea de comandos de GDAL

Manuel Vargas https://github.com/mfvargas (Universidad de Costa Rica)https://www.ucr.ac.cr/

Características generales de GDAL

Geospatial Data Abstraction Library (GDAL) es una biblioteca para leer y escribir datos geoespaciales en varios formatos raster y vectoriales. En ocasiones, también es denominada GDAL/OGR, en donde GDAL se refiere a la funcionalidad para datos raster y OGR (sigla antes usada para OpenGIS Simple Features Reference Implementation) a la correspondiente a datos vectoriales. En este documento, se utilizará la sigla GDAL para referirse a ambos modelos de datos. GDAL es distribuida por la Open Source Geospatial Foundation (OSGeo) con una licencia X/MIT.

GDAL cuenta con un único modelo abstracto de datos raster y un único modelo abstracto de datos vectoriales, lo que permite programar aplicaciones geoespaciales sin tener que ocuparse de las particularidades de cada formato que se utilice (GeoTIFF, NetCDF, ESRI Shapefile, GeoJSON, etc.).

A pesar de que GDAL está programada en C/C++, cuenta con una interfaz de programación de aplicaciones (API) para varios lenguajes de programación, incluyendo C, C++, Python y Java. Además, ofrece un conjunto de utilitarios de línea de comandos cuyas distribuciones binarias están disponibles para varios sistemas operativos, incluyendo Windows, macOS y Linux. Estas API y los utilitarios también están incluídos en plataforma de ciencia de datos llamada Anaconda, la cual cuenta con versiones para todos los sistemas operativos mencionados.

Utilitarios de línea de comandos

Los utilitarios de línea de comandos de GDAL permiten ejecutar tareas de geoprocesamiento y de conversión entre formatos geoespaciales sin utilizar una interfaz gráfica o un lenguaje de programación. Están disponibles para varios sistemas operativos, incluyendo Windows, macOS y Unix/Linux.

Consideraciones generales

Los utilitarios de línea de comandos de GDAL comparten una serie de opciones comunes que pueden visualizarse con la opción -- help-general. Por ejemplo:

ogrinfo --help-general
Generic GDAL utility command options:
  --version: report version of GDAL in use.
  --license: report GDAL license info.
  --formats: report all configured format drivers.
  --format [format]: details of one format.
  --optfile filename: expand an option file into the argument list.
  --config key value: set system configuration option.
  --debug [on/off/value]: set debug level.
  --pause: wait for user input, time to attach debugger
  --locale [locale]: install locale for debugging (i.e. en_US.UTF-8)
  --help-general: report detailed help on general options.

Para obtener ayuda acerca de un comando particular, puede usarse la opción -- help. Por ejemplo:

ogrinfo --help

Ejemplos de uso de comandos

ogrinfo

El comando ogrinfo despliega información acerca de una fuente de datos vectoriales.

Los siguientes comandos despliegan información sobre la capa de países de Natural Earth, tanto para el formato comprimido como para el formato shapefile. En el caso comprimido, note el uso de /vsizip/, para sistemas de archivos virtuales.

# Información sobre la capa comprimida en formato ZIP
ogrinfo -al -so /vsizip/ne_110m_admin_0_countries.zip

# Información sobre la capa descomprimida en formato shapefile
ogrinfo -al -so ne_110m_admin_0_countries.shp

ogr2ogr

El comando ogr2ogr realiza conversiones entre formatos de fuentes de datos geoespaciales. A la vez, realiza otras operaciones como selección de atributos y geometrías, filtrado por criterios espaciales y no espaciales, reproyección y validación de geometrías, entre otras.

Conversión entre formatos
# Despliegue de la lista de formatos vectoriales soportados por GDAL
ogr2ogr --formats

# Conversión de SHP a GeoJSON
ogr2ogr -f GeoJSON ne_110m_admin_0_countries.geojson ne_110m_admin_0_countries.shp
Descarga desde un servicio WFS, validación de geometrías y reproyección
# Descarga de la capa de cantones del IGN en el SNIT (https://www.snitcr.go.cr/)
ogr2ogr -f GeoJSON -t_srs EPSG:4326 -makevalid cantones.geojson WFS:"http://geos.snitcr.go.cr/be/IGN_5/wfs" "IGN_5:limitecantonal_5k"

# Información sobre la capa descargada
ogrinfo -al -so cantones.geojson

NOTA: si no puede acceder al servicio WFS del SNIT, descargue el archivo cantones.geojson de la dirección https://raw.githubusercontent.com/gf0604-procesamientodatosgeograficos/2021i-datos/main/ign/delimitacion-territorial-administrativa/cantones.geojson. Utilice la opción Save Page As.. (Guardar página como…) al hacer clic derecho en su navegador web. Abra el archivo en QGIS (u otro SIG de escritorio) para verificar que se guardó correctamente.

Filtrado por atributos
# Filtrado y extracción de los cantones con área >= 2000 km2
ogr2ogr -where "area >= 2000" cantones-grandes.geojson cantones.geojson

# Filtrado y extracción de los cantones de la provincia de Heredia
ogr2ogr -where "provincia = 'Heredia'" cantones-heredia.geojson cantones.geojson

# Filtrado y extracción de los cantones con área >= 2000 km2 de la provincia de Limón
ogr2ogr -where "area >= 2000 AND provincia = 'Limón'" cantones-grandes-limon.geojson cantones.geojson
Selección de atributos y filtrado
# Extracción de los campos de provincia, cantón y área de los cantones de la provincia de Alajuela
ogr2ogr -select "provincia, canton, area" -where "provincia = 'Alajuela'" cantones-alajuela.geojson cantones.geojson

Ejercicios:
1. Utilizando el archivo cantones.geojson, extraiga en otro archivo GeoJSON los cantones de la provincia de Guanacaste. Incluya todos los campos.
2. Utilizando el archivo cantones.geojson, extraiga en otro archivo GeoJSON los cantones de las provincia de Guanacaste, Puntarenas y Limón. Incluya todos los campos.
3. Repita el ejercicio 2, pero guarde el resultado en un archivo tipo Shapefile (SHP).

Corrections

If you see mistakes or want to suggest changes, please create an issue on the source repository.

Reuse

Text and figures are licensed under Creative Commons Attribution CC BY-SA 4.0. Source code is available at https://github.com/gf0604-procesamientodatosgeograficos/2021i-leccion-03/, unless otherwise noted. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: "Figure from ...".