Resolvido: GDAL diz que não há espaço em disco, mas há
GDAL Translate Error 3
Colegas pesquisadores e entusiastas de SIG de código-livre,
Bem-vindos ao meu blog!
Gostaria de começar com um aviso - posso ser uma pesquisadora desta área, mas isso não significa que tudo o que faço ou escrevo aqui funcionará para você, em suas próprias configurações de desktop e versões de packages. Não tenho nenhuma responsabilidade se você perder dados ou estragar sua instalação. Eu também não autorizo nenhuma cópia do meu conteúdo.
Recentemente, tive um erro que parecia não fazer sentido. Ao tentar rodar o GDAL Translate em linha de comando usando o Bash, o algoritmo gdal_translate retornou uma mensagem de erro, dizendo que não havia espaço em disco suficiente para salvar a saída de um simples recorte e reprojeção. Porém, o espaço necessário estava disponível. Ou, eu achei que estava.
O erro que retornou no terminal foi este:
ERROR 3: Free disk space available is 85802630536 bytes, whereas 730874237760027488 are at least necessary. You can disable this check by defining the CHECK_DISK_FREE_SPACE configuration option to FALSE.
Input file size is 52258, 16564
Tradução: “O espaço livre disponível em disco é de 85802630536 bytes, no entanto, 730874237760027488, pelo menos, são necessários. Você pode desativar essa verificação definindo a opção de configuração CHECK_DISK_FREE_SPACE como FALSE.”
Fazendo um cálculo simples, vi que o raster resultante deveria ter cerca de 50 Mb, então, este raster de saída de tamanho exagerado não fecha com o que era esperado.
No entanto, a solução para esse problema foi bem simples.
Os limites do raster de saída foram dados em coordenadas projetadas, enquanto o raster de entrada estava em coordenadas geográficas. Me parece que a ferramenta GDAL pegou a extensão projetada em UTM (em “metros”) e interpretou como uma extensão do tipo latitude e longitude (em graus). Tecnicamente, eu estava pedindo para o GDAL projetar o raster ao redor de toda a Terra aproximadamente 165 vezes. Claro que seria necessário um enorme espaço em disco para fazer isso!
O comando que eu tentei usar foi:
C:/…/gdal_translate.exe -projwin 111500.205796943 6802000.89149315 171000.731271099 6760000.94138945 -of GTiff "C:/…/input.tif" ./output.tif
Para resolver o problema, o que eu fiz foi apenas especificar as coordenadas em que a extensão de recorte estava sendo fornecida, usando a opção -projwin_srs. No caso, UTM Fuso 22 Sul (EPSG:32722).
C:/…/gdal_translate.exe -projwin 111500.205796943 6802000.89149315 171000.731271099 6760000.94138945 -projwin_srs EPSG:32722 -of GTiff "C:/…/input.tif" ./output.tif
Solucionado!
Em resumo: a causa do problema era que os limites da extensão do raster resultante estavam sendo dados em coordenadas projetadas, enquanto o raster de entrada estava definido em coordenadas geográficas.