Estoy escribiendo una utilidad simple para recortar lotes de archivos de trama geotiff multibanda en la misma área (más pequeña). Con gdalwarp, puedo recortar fácilmente un archivo usando un archivo de forma de recorte de un solo polígono:
gdalwarp -cutline clipper.shp -crop_to_cutline input.tif output.tif
Sin embargo, el área real a la que quiero recortar siempre estará definida inicialmente por otro archivo ráster geotiff, no por un archivo de forma. Sería bueno si pudiera usar la extensión de ese ráster como archivo de recorte, pero no estoy seguro de cómo hacerlo. Como era de esperar, lo siguiente no funciona (no genera un error, simplemente no produce nada):
gdalwarp -cutline clipper.tif-crop_to_cutline input.tif output.tif
Entonces, mi pregunta es, ¿hay alguna forma de suministrar un ráster gdalwarp -cutline
? Alternativamente, ¿hay otra función gdal que pueda recortar un ráster usando otro ráster? Si ninguno de estos es posible, ¿existe una forma muy simple de producir un archivo de forma con un único polígono definido por la extensión de un ráster?
Este código se incluirá en un script de Python más extenso, por lo que puedo usar las utilidades gdal de línea de comandos o cualquiera de los enlaces de Python para gdal.
Como nota al margen, sé que podría crear fácilmente un archivo de formas de recorte que cubra la extensión de mi trama en QGIS. Puedo terminar haciendo eso si no encuentro una solución sencilla, pero finalmente terminaré usando esta utilidad en docenas, si no en cientos de áreas, como parte de un gran análisis automatizado, por lo que preferiría no tener un tedioso paso manual incluso si es muy fácil.
gdaltindex clipper.shp clipper.tif
, seguido degdalwarp -cutline clipper.shp -crop_to_cutline input.tif output.tif
Para polígonos irregulares, y suponiendo que su archivo ráster geotiff sea un ráster binario, puede usar GDAL_Calc :
Esta consulta llenará 0 donde Mask.tif <= 0 y BigImage donde la Máscara> 0. Para hacer esto, ambos rásteres deben tener el mismo tamaño de celda, filas y columnas. Para extraer las mismas extensiones, use GDAL_Translate con la
-projwin ulx uly lrx lry
opción (el cuadro está en coordenadas proyectadas), pero asegúrese de que el cuadro projwin no se extienda sobre los bordes de ninguno de los rásteres.Sustituya los valores del cuadro projwin derivado de la Máscara.
fuente
La solución en Python directamente, sin dar forma:
fuente