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.
arcpy
raster
arcgis-10.0
reclassify
error-999998
DoggoDougal
fonte
fonte
reclassify
deve 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 primeiroCon
ou 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 usarcon
e 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.con
trabalhou 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 umaOR
cláusula where, mas ela se tornaria mais complicada.InList
parece a solução mais direta em relação à legibilidade e manutenção.Respostas:
O primeiro script anexado reclassificou com êxito seus dados do AK NLCD em cerca de 15 minutos (i7, máquina de 12 GB de RAM). Como o conjunto de dados original tem quase 7 GB, você pode encontrar problemas de memória. Se você não puder processar o conjunto de dados inteiro em um pedaço, tente dividi-lo com o segundo script antes da reclassificação. Minha recomendação é pegar um pequeno subconjunto de dados (clique com o botão direito do mouse na camada raster em TOC> Dados> Exportar dados> Extensão (quadro de dados) e testar o primeiro script. Depois de discar os parâmetros para o comando reclassify, avance para reclassificar Como alternativa, tente fazer o download do produto de geoprocessamento em segundo plano de 64 bits para ArcGIS 10.1 SP1, disponível aqui . Boa sorte.
Script 1
Editar : se você precisar dividir seus dados antes do processamento, este script deve ajudar:
Script 2
fonte
A whuber fez um comentário sobre o uso de ferramentas lógicas para expressar essa reclassificação . Depois de um pouco de pesquisa, descobri que o InList , como parte do conjunto de ferramentas de lógica lógica do Spatial Analyst, preencheu minha necessidade.
É de longe a solução simplista que eu pude encontrar, executa o mais rápido e não requer consideração de agrupar o conjunto de dados original. Não há necessidade de considerar a RAM disponível da máquina, pois esta ferramenta lê diretamente do disco e armazena os resultados diretamente no disco.
fonte
SplitRaster_management
, leva 7,04 segundos.Eu usei o conjunto de dados mencionado na postagem original com uma versão 10.4 do arcmap. A reclassificação falha quando a varredura de saída é uma grade, porque as contagens de células reclassificadas estão excedendo o que pode ser armazenado no campo COUNT do IVA da grade. Quando o raster de saída é um fgdb, ele é executado com êxito em cerca de 11 minutos em uma máquina antiga de 4 núcleos executando o Windows 8. Os formatos de rasterização sem grade devem funcionar, pois usam valores flutuantes de precisão dupla para o campo de contagem. Espero que você tenha o mesmo comportamento nas versões 10.2 ou 10.3. Investigaremos o uso de um formato raster diferente para a saída padrão do Reclassify.
fonte