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