Regras do valor Nodata?


9

Quais são as regras aritméticas que governam os valores do Nodata? Independentemente de como esses valores nulos são definidos? Estou usando a Calculadora ArcMap Raster.

Estou pensando especificamente em operações como 1 * Nodata (ou 1 * nulo), 1 / Nodata, 1 + Nodata, 1 + Nodata, 1-Nodata, Nodata-1 etc ...


3
as células nodata são ignoradas, no entanto, é necessário verificar operações específicas para confirmar, por exemplo, Divide ignora células nodata, consulte resources.arcgis.com/en/help/main/10.2/index.html#//…

3
Eu apenas acrescentaria que, para qualquer operação matemática envolvendo um operando com NoData, o resultado será sempre NoData, mesmo que outros operandos tenham valores válidos.
WhiteboxDev

pode valer a pena notar que existem alguns tipos de células nodata que podem ser "preenchidas" usando alguns métodos de interpolação. isso é particularmente útil quando um de seus rasters possui algumas manchas, mas os outros rasters estão limpos.
user1269942

Oi Whitebox, na verdade, posso pensar em algumas operações em que sua instrução pode não estar 100% correta (vizinhança significa em uma célula NoData, por exemplo). Obviamente, como você afirma, esses podem não ser considerados operadores puramente matemáticos, mas acho que vale a pena comentar.
Se você não sabe- apenas GIS

Respostas:


4

Certo, ninguém forneceu uma resposta para essa pergunta, então pensei em participar. Suspeito que todos os GIS que fornecem suporte para o valor NoData o façam exatamente da mesma maneira. Cada operação matemática aplicada a uma imagem rasterizada procura o caso especial de células da grade que contêm valores NoData e, em seguida, executa um caminho que efetivamente ignora a operação e gera um valor NoData para a célula da grade correspondente na imagem de saída . Aqui está um exemplo retirado da ferramenta Adicionar no GIS de código-fonte aberto GIS Whitebox:

insira a descrição da imagem aqui

Aliás, esse é o código que também é executado se você adicionar duas imagens na Calculadora Raster do Whitebox. No Whitebox, cada varredura pode ter um valor NoData exclusivo, pois é especificado no arquivo de cabeçalho da varredura. Como tal, não é necessariamente o mesmo para as duas imagens sendo adicionadas e é por isso que você vê as variáveis ​​noData1 e noData2 definidas no código acima. Importante, você verá que, à medida que o código passa por cada célula da grade na pilha de varredura, ele recupera os dois valores nas imagens de entrada correspondentes para uma célula (z1 e z2) e verifica se ambos não são iguais a NoData . Portanto, a adição ocorre apenas se os dois rasters contiverem um valor válido nas entradas. Se não for esse o caso, nada será inserido na célula da grade de saída. De fato, a imagem de saída foi criada e inicializada com seu próprio valor NoData, portanto, ao não inserir um valor agregado para uma célula da grade (porque pelo menos uma das entradas é NoData), a saída também terá o valor NoData. Operações semelhantes ocorrem para cada uma das operações matemáticas e, de fato, a maioria das ferramentas que envolvem conjuntos de dados rasterizados de entrada seguirá uma abordagem semelhante para tratar o caso especial dos valores NoData. Duas exceções comuns a esta regra de que as operações geram um valor NoData para entradas NoData são encontradas na maioria dos GIS no diretórioFerramentas Con e Set Null . A ferramenta Con do ArcGIS declara: "Se o NoData não satisfizer o, ele não recebe o valor do e permanece NoData". Portanto, se 'NoData' fizer parte da instrução condicional e uma célula da grade com esse valor reduzido para 'TRUE', um valor não NoData poderá ser gerado. Da mesma forma, a ferramenta Definir Nulo realmente produzirá um valor não NoData para células de entrada que contêm NoData.

Espero que ajude você a entender o funcionamento desse misterioso valor NoData. E lembre-se de que zero não é o mesmo que NoData! (A não ser, é claro, que zero tenha sido marcado como o valor NoData para uma determinada varredura).


3

Cada um dos seus exemplos, a resposta é realmente NoData

1 * Nodata (ou 1 * nulo) = NoData

1 / Nodata = NoData

1 + Nodata = NoData

1-Nodata = NoData

Nodata-1 = NoData

Devo acrescentar que muitas operações oferecem a opção de "pular" o NoData em uma função.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.