Cortar archivos Raster-TIF con un script de Python en QGIS

En esta entrada se muestra el proceso para realizar una extracción por mascara (“cortar”) de varios archivos raster-TIF con un archivo shape, ejecutando un script en la consola de Python de QGIS.

El script puede ejecutarse también con el CMD (ventana del Símbolo del sistema) de Windows, pero en este post únicamente se mostrará cómo realizarlo directamente el QGIS.

Los programas para el funcionamiento de este script son: Windows / QGIS.

En la imagen que se ve a continuación, en el recuadro rojo están las tres líneas donde el usuario debe modificar los directorios correspondientes a sus propios datos. Nótese que dicho directorio se puede copiar directamente desde el navegador de Windows, y se pega en el script, anteponiendo la letra r en las comillas.

Por ejemplo, el directorio D:_Franz\04_cortarTIF_QGIS\datosFranz\TIF_originales
Quedaría así:
CarpetaTIForiginales = r”D:_Franz\04_cortarTIF_QGIS\datosFranz\TIF_originales”

Las otras partes del script se deben dejar sin modificaciones, incluso las primeras 11 líneas se pueden copiar hasta a la consola de Python de QGIS, y no habrá problema pues son líneas comentadas ya que tienen el símbolo # de comentarios.

Una vez modificados los directorios del script, se puede copiar a la consola de Python de QGIS, la cual se abre desde el menú Complementos > Consola de Python, o mediante el botón que tiene un ícono similar al de Python:

Luego se copia todas las líneas de código del script hasta la ventana de entrada, que se señala en verde en la imagen a continuación:

Luego se introduce uno o dos ENTER para que se ejecute. Si todo está en orden, los colores de las líneas que quedan en la parte superior tendrán color negro, azul o verde, si resultan líneas en color rojo, indica que se presentó algún error, por lo que se debe revisar el procedimiento y las modificaciones realizadas al script original, o bien, copiar las líneas de código nuevamente.

Es necesario también revisar la carpeta de los archivos de salida (raster-TIF cortados) y eliminar los archivos que se hayan generado, antes de ejecutar nuevamente el script.

Una contribución de: Antonio Pantoja

8 comentarios en “Cortar archivos Raster-TIF con un script de Python en QGIS”

  1. Interesante post pero no termino de ver la necesidad de meter las cosas en un script de Python cuando se puede correr el comando de GDAL directamente desde la consola (que es en el fondo a lo que llama Python) y te ahorras incluso abrir QGIS.
    😉

    • Efectivamente, el método mostrado en este post es tan solo un más de los múltiples posibles.
      Gracias por comentar
      Saludos
      Antonio Pantoja C

  2. Holaaa.

    Excelente post y genial para las personas que apenas están aprendiendo SIG y quieren automatizar sus tareas utilizando Python.

    Como dato adicional, para aquellas personas que estén trabajando en en la versión de QGIS 3.0 tengan en cuenta que la función print presente en el codigo de ejemplo le hace falta los parentesis ” print() “. Solo ajustando ese pequeño detalle el codigo es 100% efectivo. Muchas gracias, espero que publiques mas temas así.

  3. Aun no encuentro mi error…
    archivo a procesar: C:\Users\NESTOR\Documents\TESIS\FUENTES\GOES_IMAGENES\3Marzo\1-10\GOES15_BAND_04_20180301_000017.tif
    2

    la carpet que contiene al raster y ese dos de abajo salen en rojo.

  4. Hola. No me funciona.
    Hay que tener instalado gdal? o con el gdal que trae qgis funciona?

    Un saludo

    Traceback (most recent call last):
    File “”, line 1, in
    File “D:/WK/PYQGIS/VOLAYA/CLIP_IMAGES_SHAPE.py”, line 11, in
    subprocess.call(‘gdal_warp -dstnodata -9999 -q -cutline %s -crop_to_outline -of GTiff -ot UInt16 %s %s’ % (shp_clip, raster,corte))
    File “C:\usbgis\apps\qgis2\apps\Python27\lib\subprocess.py”, line 524, in call
    return Popen(*popenargs, **kwargs).wait()
    File “C:\usbgis\apps\qgis2\apps\Python27\lib\subprocess.py”, line 711, in __init__
    errread, errwrite)
    File “C:\usbgis\apps\qgis2\apps\Python27\lib\subprocess.py”, line 948, in _execute_child
    startupinfo)
    WindowsError: [Error 2] El sistema no puede encontrar el archivo especificado

Los comentarios están cerrados.