Resolvido: Erro de entradas “Error: Catchment Area” no SAGA GIS 7.9.0 e 2.3.2 (no QGIS) na execução do Fator LS (LS Factor) “saga_cmd ta_hydrology 22” e em outros algoritmos
Colegas pesquisadores e entusiastas de GIS 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. Me eximo da responsabilidade caso você perca dados ou estrague sua instalação. Eu também não autorizo nenhum tipo de cópia do meu conteúdo.
Na semana passada, eu falei um pouco sobre como usar o SAGA na linha de comando do Prompt. Hoje, vou discutir soluções para o problema “Error: Catchment Area” no SAGA GIS. Ou “Error: seu raster de entrada”, ou “Input layers do not have the same grid extent”.
Sobre o erro
Tive esse erro em mais de um algoritmo SAGA, mas usarei o algoritmo LS Factor para exemplificar. Esse erro é possível em alguns dos algoritmos do SAGA que usam pelo menos duas entradas raster.
Vamos dar uma olhada na ferramenta LS Factor, ta_hydrology 22. Estou usando a versão de linha de comando saga_cmd aqui (SAGA Command Line Interface - CLI), mas esse erro pode ser reproduzido em outras plataformas.
saga_cmd ta_hydrology 22 -SLOPE <str> -AREA <str> [-LS <str>] [-CONV <str>] [-METHOD <str>] [-EROSIVITY <str>] [-STABILITY <str>]
Entro com esses dois rasters como entradas:
saga_cmd ta_hydrology 22 -SLOPE slope.tif -AREA sca_teste.tif -LS saida.tif
E a saída do algoritmo é:
____________________________
##### ## ##### ##
### ### ## ###
### # ## ## #### # ##
### ##### ## # #####
##### # ## ##### # ##
____________________________
SAGA Version: 7.9.0 (64 bit)
____________________________
library path: D:[..]\saga-7.9.0_x64\saga-7.9.0_x64\tools\
library name: ta_hydrology
library : ta_hydrology
tool : LS Factor
identifier : 22
author : O.Conrad (c) 2003
processors : 4 [4]
____________________________
loading: slope
100%loading: sca_teste
100%Error: Catchment Area
Usage: saga_cmd ta_hydrology 22 [-SLOPE <str>] [-AREA <str>] [-LS <str>] [-CONV <str>] [-FEET <str>] [-METHOD <str>] [-EROSIVITY <double>] [-STABILITY <str>]
-SLOPE:<str> Slope
Grid, input
-AREA:<str> Catchment Area
Grid, input
-LS:<str> LS Factor
Grid, output
-CONV:<str> Area to Length Conversion
Choice
Available Choices:
[0] no conversion (areas already given as specific catchment area)
[1] 1 / cell size (specific catchment area)
[2] square root (catchment length)
Default: 0
-FEET:<str> Feet Adjustment
Boolean
Default: 0
-METHOD:<str> Method (LS)
Choice
Available Choices:
[0] Moore et al. 1991
[1] Desmet & Govers 1996
[2] Boehner & Selige 2006
Default: 0
-EROSIVITY:<double> Rill/Interrill Erosivity
Floating point
Minimum: 0.000000
Default: 1.000000
-STABILITY:<str> Stability
Choice
Available Choices:
[0] stable
[1] instable (thawing)
Default: 0
Então, esse foi o erro obtido: “Error: Catchment Area” e daí a maneira de usar o algoritmo (usage) foi printada na tela.
Para referência, abaixo, o mesmo erro, reproduzido no SAGA 2.3.2 do QGIS 3.16.4:
Não encontrei nada sobre esse erro, mas acabei conseguindo corrigir o erro sozinha. Então, pode ser que eu seja a única pessoa até hoje que teve esse problema. Mas, na esperança de que este post possa algum dia ajudar alguém, estou aqui escrevendo sobre isso.
Esse erro acontece com grids raster aparentemente completamente normais e compatíveis - às vezes, eles têm as mesmas dimensões, ou até mesmo o mesmo tamanho de célula e, na visualização, parecem que estão alinhados. Então, por que isso acontece?
Estão alinhados? Mas, estão alinhados mesmo? Meros centímetros de diferença podem desencadear esse problema, porque os rasters não estão tecnicamente sobre o mesmo grid. Isso acontece mesmo se a diferença for muito menor do que o tamanho da célula do raster. E não dá para confiar só na própria visão para saber isso. Você consegue notar que esses dois rasters abaixo não estão alinhados?
Bom, eu sei que eu não consigo!
Tá, mas por que isso acontece?
Imagine que você tenha dois rasters, raster A e raster B, gerados a partir do mesmo conjunto de dados por meio de procedimentos diferentes …
Raster A é projetado em um fuso UTM e tem um tamanho de célula de 30 m. Suas dimensões são 3000 x 150.
Raster B também é projetado em um fuso UTM e tem um tamanho de célula de 30 m. Sua dimensão também é de 3000x150.
Mas…
O Raster A começa na coordenada X de 0.00000 e o Raster B começa na coordenada X de 0.01800, provavelmente por causa de algum outro algoritmo que você usou para criar um deles. Isso significa que eles estão ligeiramente descentrados. Isso é o suficiente para causar uma diferença e abortar a execução de alguns algoritmos do SAGA.
Para ver o tamanho de célula, dimensões, e coordenada inicial e final de cada raster usando o QGIS 3.16 ou QGIS 3.18, entre em Properties, aba Information.
É este mesmo o seu problema ou seu problema é outro?
Para testar se esse é o problema, tentei executar o mesmo algoritmo com o mesmo raster para ambas as entradas, apenas para ver se o erro acontece. Isso porque obrigatoriamente o raster está alinhado com ele próprio. E funcionou perfeitamente:
saga_cmd ta_hydrology 22 -SLOPE slope.tif -AREA slope.tif -LS saida.tif
A saída foi:
____________________________
##### ## ##### ##
### ### ## ###
### # ## ## #### # ##
### ##### ## # #####
##### # ## ##### # ##
____________________________
SAGA Version: 7.9.0 (64 bit)
____________________________
library path: D:[..]\saga-7.9.0_x64\saga-7.9.0_x64\tools\
library name: ta_hydrology
library : ta_hydrology
tool : LS Factor
identifier : 22
author : O.Conrad (c) 2003
processors : 4 [4]
____________________________
loading: slope
100%loading: slope
100%
Parameters
Grid System: 12.5; 2420x 2114y; 448524.650800x 6740995.164300y
Slope: slope
Catchment Area: slope
LS Factor:
Area to Length Conversion: no conversion (areas already given as specific catchment area)
Feet Adjustment: false
Method (LS): Moore et al. 1991
Rill/Interrill Erosivity: 1.000000
Stability: stable
101%Saving grid: saida.tif...
Export GeoTIFF
Parameters
Grid System: 12.5; 2420x 2114y; 448524.650800x 6740995.164300y
Grid(s): 1 object (saida)
File: saida.tif
Creation Options:
Band 1
100%
100%okay
Então, se funcionar para você, você fica sabendo que o problema está realmente no segundo raster de entrada.
Como resolver este problema e executar o SAGA sem problemas?
Minha maneira favorita de garantir que os rasters estejam na mesma grade é usando o comando gdal Warp (Reproject) do Processing Toolbox do QGIS 3.16 (qgis.org).
Faça a projeção cartográfica (ou não, se não precisar) e escolha os limites do outro raster de entrada para recortar o seu raster. Isso é importante: use o outro raster, não uma máscara vetorial (como um shapefile).
Escolha entre as várias opções de interpolação (gosto de usar a bilinear).
Tente o algoritmo novamente, agora com o raster resultante do Warp.
SAGA em linha de comando
saga_cmd ta_hydrology 22 -SLOPE slope.tif -AREA sca_warp.tif -LS saida.tif
A saída é:
____________________________
##### ## ##### ##
### ### ## ###
### # ## ## #### # ##
### ##### ## # #####
##### # ## ##### # ##
____________________________
SAGA Version: 7.9.0 (64 bit)
____________________________
library path: D:[..]\saga-7.9.0_x64\saga-7.9.0_x64\tools\
library name: ta_hydrology
library : ta_hydrology
tool : LS Factor
identifier : 22
author : O.Conrad (c) 2003
processors : 4 [4]
____________________________
loading: slope
100%loading: sca_warp
100%
Parameters
Grid System: 12.5; 2420x 2114y; 448524.650800x 6740995.164300y
Slope: slope
Catchment Area: sca_warp
LS Factor:
Area to Length Conversion: no conversion (areas already given as specific catchment area)
Feet Adjustment: false
Method (LS): Moore et al. 1991
Rill/Interrill Erosivity: 1.000000
Stability: stable
101%Saving grid: saida.tif...
Export GeoTIFF
Parameters
Grid System: 12.5; 2420x 2114y; 448524.650800x 6740995.164300y
Grid(s): 1 object (saida)
File: saida.tif
Creation Options:
Band 1
100%
100%okay
SAGA no QGIS 3.16.4
Pronto! Mistério resolvido, pelo menos, por enquanto.
E boa sorte! Essa sugestão sempre funciona para mim, e espero que funcione para você também!
Extras:
- Meus rasters de entrada têm diferentes tamanhos de célula.
Neste caso, sugiro preencher o campo “Output file resolution in target georeferenced units [optional]” no Warp (Reproject) com o valor exato do tamanho da célula do outro raster e tentar novamente.
- No painel Properties, Information de cada raster, ambos mostram as mesmas extensões. Devo tentar usar Warp de qualquer maneira ou certamente este é um problema diferente?
Sim, acho que você pode tentar usar Warp (Reproject). Especialmente se seus rasters estiverem em coordenadas geográficas latitude longitude, o número de dígitos mostrado pode não ser suficiente para ver as diferenças entre as duas camadas raster.
- Tentei o mesmo raster em ambas as entradas na ferramenta do SAGA e ainda assim retornou a mensagem com o “usage”.
Infelizmente, isso significa que você provavelmente tem um problema diferente e a solução apresentada aqui pode não funcionar para você.