Cómo cortar un ráster usando una rejilla mediante GDAL/OGR/PyQGIS

En PyQGIS no existen clases que permitan, directamente, cortar un ráster con base en alguna geometría determinada. Si ustedes abren la herramienta ‘Clipper” de QGIS, observarán que utiliza el comando gdal_translate para tal efecto. No obstante, esto no es obstáculo para poder implementar una aplicación mixta (GDAL/OGR/PyQGIS) en la Python Console de QGIS.

Para ello, utilicé el ráster DEM y la grid (tipo polígono con 50 % de transparencia) de la imagen siguiente. El objetivo es seleccionar cualquier feature de la grid como base para el corte.

clip1

Un código que permite hacer esto es el siguiente:

import os

mapcanvas = iface.mapCanvas()

layers = mapcanvas.layers()

#vector layer
feat = layers[0].selectedFeatures()

rect = feat[0].geometry().boundingBox()

xmin = rect.xMinimum()
ymax = rect.yMaximum() 
xmax = rect.xMaximum()
ymin = rect.yMinimum()

extent = " -projwin " + str(xmin) + " " + str(ymax) + " " + str(xmax) + " " + str(ymin) + " "

#raster layer
provider = layers[1].dataProvider()

input_raster_path = provider.dataSourceUri()
output_raster_path = " /home/zeito/pyqgis_data/clip_raster2.tif"

cmd = "gdal_translate " + extent + input_raster_path + output_raster_path

os.system(cmd)

Después de utilizar la herramienta “Select Features by area or single click” en la celda (3, 9) de la grid (fila 4, columna 10), se ejecutó el código en la Python Console. Cargué el ráster de salida, clip_raster2.tif, al Map Canvas y el corte fue como esperaba. Lo coloricé con 5 clases (pseudocolor, rampa ‘Spectral’).

clip2

Es importante destacar que el uso del modificador ‘-projwin’ es el que garantiza que se preserve la resolución del ráster original.

Esta entrada fue publicada en GDAL/OGR, PyQGIS, QGIS, SIG, Software Libre. Guarda el enlace permanente.

Una respuesta a Cómo cortar un ráster usando una rejilla mediante GDAL/OGR/PyQGIS

  1. Pingback: Plugin de QGIS para cortar un ráster con base en los índices de fila, columna | El Blog de José Guerrero

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s