Eu tenho uma ortoimagem RGB com área preta em vez de NoData, como mostrado aqui:
Quando uso a ferramenta SetNull, ela remove a área preta, mas a transforma em uma ortoimagem em escala de cinza, que não é o que eu quero.
Eu sei que existe uma maneira de contornar isso usando a ferramenta Clip (Data Management) para cortar a varredura para si mesma e lá você pode definir o valor NoData como o valor das células pretas (0). No entanto, estou criando um workshop para estudantes e gostaria de usar um método menos contra-intuitivo.
É claro que existe a opção de executar a ferramenta NoData em cada banda individualmente e depois combinar as três bandas, no entanto, preciso ter uma condição em que band1, band2 e band3 sejam iguais a 0 para definir isso como NoData. Ser capaz de fazer isso no ModelBuilder seria ideal, mas criar scripts usando o ArcPy também seria bom.
Estou usando o ArcGIS 10.2 Desktop com licença avançada.
fonte
Respostas:
O que você deseja fazer é Definir propriedades de varredura em um script ou alterá-lo manualmente no ArcCatalog. Isso não criará uma nova varredura ou levará muito tempo.
Em python, é um pouco complicado:
Como o nodata está na lista, acho mais fácil especificar isso; os parâmetros são Band Value; Band Value; ... até que todas as bandas sejam endereçadas. Se você provavelmente tiver mais bandas (ou menos) na mesma pasta, precisará usar arcpy.Describe e a propriedade bandCount para definir o valor nulo para o número correto de bandas:
No ArcCatalog, clique com o botão direito na camada e vá para Propriedades:
clique no botão editar:
Digite os valores e pressione OK para descartar o editor NoData e OK para aplicar a alteração.
Agora a varredura não exibirá nada no ArcMap onde o valor da célula é 0,0,0.
fonte
Se você acessar as propriedades de varredura e se a simbologia estiver definida como composto RGB (o que parece ser), você poderá marcar a caixa Exibir valores de plano de fundo (RGB) e definir o que quiser como plano de fundo oco. Portanto, basta definir 0 0 0 como o valor de segundo plano e você deve estar no negócio.
fonte
Eu acho que a maneira mais fácil de conseguir isso seria criar uma raster de condição nula primeiro e depois usá-la para atribuir os valores NoData a cada banda separadamente.
Tente executar a função Con para criar a condição nula raster.
Em seguida, use a varredura de condição nula para atribuir valores NoData a cada banda com a função Null definida . Você deve conseguir fazer isso com o construtor de modelos ou python.
fonte
Eu acredito que você pode usar diferentes procedimentos em árvore que os teóricos devem funcionar. Calculadora de varredura onde você pode usar esta expressão
SETNULL([raster] == value, [raster])
Reclassificar onde você deve reclassificar apenas o valor que deseja. E usando o ArcPy, você pode usar este script que encontrei aqui https://gis.stackexchange.com/a/24578/47790fonte