Jornadas SIG Libre 2024

Explora los fundamentos de GDAL/OGR para procesar imágenes satelitales a través de la línea de comandos.

Este taller te sumergirá en el uso de estas herramientas para manipular, convertir y analizar datos raster y vectoriales.

Desde principiantes hasta usuarios con experiencia, descubre cómo potenciar proyectos geoespaciales con GDAL/OGR.

Software necesario: GDAL/OGR
Nivel: Intermedio
Conocimientos previos: Terminal Linux

Parque Natural de Aiguamolls

El Parque Natural de Aiguamolls es una reserva de humedales en Cataluña, hogar de diversas aves y rica biodiversidad.

Sentinel-2 y Aiguamolls

El parque cabe en el Tile 31TEG.

Descarga datos Sentinel-2

Los datos se bajan la web oficial de Copernicus.

Tambien se puede utilizar una API.

Descarga manual del tile 31TEG

Visualización de datos

Visualización en QGIS de la banda 8 (NIR) del tile 31TEG

NDVI + clip

Generación del NDVI en QGIS y recorte a la extensión del parque.

GDAL

Biblioteca de software para la lectura y escritura de formatos de datos geoespaciales.

GDALinfo

Proporciona información sobre un conjunto de datos raster.

GDALinfo JSON

gdalinfo $filename -json

GDALinfo screening

gdalinfo $filename -json | jq '.metadata."".CLOUD_COVERAGE_ASSESSMENT'

GDALinfo - machine testing

cloud_coverage=$(gdalinfo $filename -json | jq -r '.metadata[""].CLOUD_COVERAGE_ASSESSMENT') if (( $(echo "$cloud_coverage > 1" | bc -l) )); then echo echo "too cloudy" fi

GDAL scripting to NDVI

#!/bin/bash filename=S2A_MSIL2A_20240605T104031_N0510_R008_T31TEG_20240605T182755.SAFE.zip geojson_file=enpe.geojson band08_path=$(unzip -l $filename | grep "_B08_10m.jp2$" | awk '{print $4}') band04_path=$(unzip -l $filename | grep "_B04_10m.jp2$" | awk '{print $4}') gdalwarp -cutline $geojson_file -crop_to_cutline -dstalpha /vsizip/$filename/$band08_path band08_clipped.tif gdalwarp -cutline $geojson_file -crop_to_cutline -dstalpha /vsizip/$filename/$band04_path band04_clipped.tif gdal_calc.py -A band08_clipped.tif -B band04_clipped.tif --outfile=ndvi.tif --calc="(A.astype(float) - B.astype(float)) / (A.astype(float) + B.astype(float))" --type=Float32 rm band08_clipped.tif band04_clipped.tif

GDAL script time

real 0m2.055s user 0m4.815s sys 0m0.319s