Estou escrevendo um utilitário simples para cortar lotes de arquivos raster geotiff de várias bandas na mesma área (menor). Usando gdalwarp, posso cortar facilmente um arquivo usando um shapefile de recorte de polígono único:
gdalwarp -cutline clipper.shp -crop_to_cutline input.tif output.tif
No entanto, a área real na qual quero recortar sempre será inicialmente definida por outro arquivo raster geotiff, não por um shapefile. Seria bom se eu pudesse usar a extensão dessa varredura como arquivo de recorte, mas não tenho certeza de como fazer isso. Sem surpresa, o seguinte não funciona (não gera um erro, apenas não produz nada):
gdalwarp -cutline clipper.tif-crop_to_cutline input.tif output.tif
Então, minha pergunta é: existe uma maneira de fornecer uma varredura gdalwarp -cutline
? Como alternativa, existe outra função gdal que pode cortar uma varredura usando outra varredura? Se nenhuma dessas opções for possível, existe uma maneira muito simples de produzir um arquivo de forma com um único polígono definido pela extensão de uma varredura?
Esse código será envolvido em um script python mais extenso, para que eu possa usar os utilitários de linha de comando gdal ou qualquer uma das ligações de python para gdal.
Como uma observação lateral, eu sei que poderia facilmente criar um arquivo de forma de recorte que cubra a extensão da minha varredura no QGIS. Posso acabar fazendo isso se não encontrar uma solução direta, mas acabarei usando esse utilitário em dezenas, senão centenas de áreas, como parte de uma grande análise automatizada, por isso prefiro não ter um tédio. passo manual, mesmo que seja muito fácil.
gdaltindex clipper.shp clipper.tif
, seguido porgdalwarp -cutline clipper.shp -crop_to_cutline input.tif output.tif
Para polígonos irregulares, e supondo que seu arquivo de varredura geotiff seja uma varredura binária, você pode usar GDAL_Calc :
Essa consulta preencherá 0 em que Mask.tif <= 0 e BigImage em que Mask> 0. Para fazer isso, as duas rasters devem ter o mesmo tamanho de célula, linhas e colunas. Para extrair as mesmas extensões, use GDAL_Translate com a
-projwin ulx uly lrx lry
opção (a caixa está nas coordenadas projetadas), mas verifique se a caixa do projwin não se estende sobre as bordas de nenhuma varredura.Substitua valores pela caixa do projwin derivada da Máscara.
fonte
A solução em Python diretamente, sem criar forma:
fonte