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.