Procesamiento de imágenes con la librería GDAL (2ª parte). Reproyección con gdalwarp

3 minuto de lectura

Este artículo continua la entrada anterior en la se expusieron algunos de los usos de los comandos gdalinfo y gdaltranslate de la librería GDAL. En el siguiente texto nos vamos a centrar en el comando gdalwarp. Este comando se usa para hacer reproyecciones del Sistema de Referencia de Coordenadas de una imagen georeferenciada.

Reproyección de una imagen georeferenada con gdalwarp

El uso básico es sencillo: partimos de la base de que la imagen ya posee un SRC definido, tras el comando indicaremos el SRC de salida usando el código EPSG (ej. -t_srs “EPSG:4326”), el fichero a reproyectar y el nombre la imagen proyectada.

  $ gdalwarp  -t_srs "EPSG:4326"  -of GTiff img.tif img4326.tif

Las opciones de gdalwarp son muchos más variadas establecer un valor sin datos (- dstnodata) o usar una archivo vectorial para recortar la imagen de salida (-cutline). Todas las opciones pueden consultarse en la siguiente dirección http://www.gdal.org/gdalwarp.html

De ED50 a ETRS89

En España, a partir del 1 de enero de 2015  y según  el Real Decreto 1071/2007 , de 27 de julio, por el que se regula el sistema geodésico de referencia oficial en España, “…toda la cartografía y bases de datos de información geográfica y cartográfica producida o actualizada por las Administraciones Públicas deberá compilarse y publicarse conforme a lo que se dispone en este real decreto” o lo que es lo mismos debe estar encontrarse en el ETRS89. Más información en esta página del IGN.

Para facilitar la transformación del datum ED50 a ETRS89, el Instituto Geográfico Nacional ha generado dos rejillas (Península y Baleares) en formato NTV2. Estas rejillas pueden ser descargadas desde la web del IGN.  Las rejillas pueden añadidas  usadas en la mayoría de los SIG pero también podemos utilizarla directamente usando GDAL con el comando gdalwarp. En la web de Mappingis podréis encontrar un artículo de su uso en QGIS.

Si queremos trasformar con gdalwarp una imagen en ED50 UTM30N (EPGS:23030) a ETRS89 (EPGS:25830), lo primero será descargar la correspondiente rejilla a nuestro ordenador. Tras el comando debemos añadir los SRC de entrada (-s_srs) y salida (-t_srs), pero en esta ocasión añadiendo los parámetros de la librería PROJ.4 e indicando la ruta de la rejilla del IGN tras la opción nadgrids.

Suponiendo que hemos almacenado la rejilla de la península en nuestro disco duro C: en la carpeta “rejillas”, el comando quedaría así:

  $ gdalwarp -s_srs "+init=epsg:23030 +nadgrids=C/:rejilla/PENR2009.gsb +wktext" -t_srs "+init=epsg:25830 +nadgrids=null +wktext" -of GTiff img23030.tif img25830.tif

Un poco de programación: procesando de múltiples imágenes con gdalwarp

Como he comentado al principio, todo este textazo tiene en primer lugar una función didáctica para mi. El segundo aspecto por el que merece utilizar los comando de estas librerías es el hecho de poder crear nuestros propios fragmentos de código o scripts que nos ayuden a mejorar nuestra vida..al menos desde el punto de vista informático. Creo que en esta búsqueda de la felicidad, podría ser interesante hacer un un pequeño script que por ejemplo convirtiera a formato GeoTiff y mejorara el tamaño de, ¿porqué no?, 200 ficheros.

Creamos un script utilizando el shell de Linux con la extensión sh (ej. ed50etrs89.sh). El script está pensado para ser utilizado desde el terminal de Linux. Si alguno se lo trabaja para Windows o Mac, y quiere que lo ponga en la entrada avisad por correo.

El código hace lo siguiente:

  • Localiza las imágenes con la extensión JPG que se encuentran en el mismo directorio del archivo  ed50etrs89.sh
  • Reproyecta  y comprime las imágenes a ETRS89 UTM 30N usando la rejilla del IGN localizada en en mismo directorio del script.
  • Salva las imágenes con el sufijo “_25830”  y en formato GeoTiff
  • Usa gdalinfo para generar una archivo de texto con los metadatos de las imágenes reproyectadas.

Si es necesario le asignamos, los correspondientes permisos de ejecución con chmod

  $ chmod +x ed50etrs89.sh

Y a continuación, lo ejecutamos

  $ ./ed50etrs89.sh

Etiquetas:

Categorías: ,

Actualizado:

Comentar