Considere o conjunto de dados NLCD2001 Land Cover para o Alasca ( link para download ). Preciso reclassificar esse conjunto de dados para que apenas os pixels dos valores 41, 42 e 43 sejam preservados; todos os outros valores de pixel devem se tornar NoData (ou 0, se necessário).
Parece uma tarefa simples, exigindo apenas uma chamada para a ferramenta Reclassificar. Infelizmente, todas as chamadas resultam em uma mensagem de erro vaga e inútil:
Executing: Reclassify "D:\ak_nlcd_2001_land_cover_3-13-08_se5.img" Value "0 40 0;41 41;42 42;43 43;44 255 0;NODATA 0" "D:\alaska_reclassified.tif" DATA
Start Time: Thu Jan 03 09:23:13 2013
ERROR 999998: Unexpected Error.
Failed to execute (Reclassify).
Failed at Thu Jan 03 09:23:13 2013 (Elapsed Time: 0.00 seconds)
Como posso reclassificar esse conjunto de dados raster? Estou usando o ArcCatalog 10.0, Build 4000, com a extensão Spatial Analyst ativada.
reclassifydeve ser um último recurso, porque é de escopo tão geral que provavelmente usa métodos menos eficientes do que os que podem ser obtidos quando a reclassificação é fácil de expressar aritmeticamente ou logicamente. No presente caso, o critério para a reclassificação é tão simples que você deve experimentá-lo primeiro Conou mesmo com operações aritméticas diretas (porque são rápidas). Por exemplo, "grid" * ("grid" >= 41) * ("grid" <= 43)deveria fazê-lo. A RAM não deve ser um problema - o Spatial Analyst abre automaticamente sua E / S raster e essas são operações locais.
Inlisté uma boa solução (+1). Consegui usar cone monitorar o uso da RAM durante a operação. Nunca excedeu 180 MB, pouco mais que a RAM usada apenas para iniciar o ArcMap. O mosaico no ArcGIS é automático - você nem consegue controlá-lo (a menos que esteja programando na interface C / Fortran). Parece que as limitações de RAM são de pouca preocupação.
contrabalhou para mim também, com a condição "Value" >= 41 AND "Value" <= 43. Eu teria optado por essa solução, mas não tenho certeza se valores adicionais de varredura serão de interesse no futuro. Obviamente, eu poderia adicionar uma ORcláusula where, mas ela se tornaria mais complicada. InListparece a solução mais direta em relação à legibilidade e manutenção.

