Somando valores de pixel dentro da zona de polígono no QGIS?

8

Eu tenho duas camadas: uma camada raster e uma camada vetorial (polígono). Consigo ver os valores dos pixels de varredura, mas não sei como combiná-los com as informações da camada de polígono. Mais especificamente, eu gostaria de:

  1. somar valores de todos os pixels dentro das bordas de um polígono
  2. conte o número de pixels com um valor específico dentro das bordas de um polígono

Alguém pode ajudar e aconselhar sobre como fazer isso no QGIS?

Alex
fonte
Não tenho certeza de todo o processo no QGIS, mas acho que o primeiro passo seria converter sua varredura em uma camada vetorial. Você pode usar a ferramenta Poligonizar do QGIS e usar sua camada de polígono como uma máscara.
Baltok

Respostas:

6

Antes era necessário usar v.rast.stats no plug-in GRASS, mas agora você pode usar as Estatísticas Zonais incorporadas no menu Raster.

Você tem uma camada de polígono carregada e a varredura. Você executa o item de menu.

isso responderá a parte a) da sua pergunta.

O v.rast.stats e outras ferramentas fornecerão uma saída mais detalhada, mas provavelmente um fluxo de trabalho simples para b) é extrair cada polígono (use o menu Raster | Extração | Clipper) e, em seguida, execute um histograma em cada um. Depende da estrutura dos seus dados, com que frequência você precisa fazê-lo etc.

Willy
fonte
lembre-se de que as funções de grama também podem ser acessadas com o plugin sextante. Com a nova versão do qgis, o sextane foi integrado (não mais como um plug-in, mas como componente principal), por isso é um bom momento para aprendê-lo.
nickves
apenas no caso de alguém fica preso, Zonal Estatística é um plugin que você tem que instalar / ativar através do menu de plugins - caso contrário, não estará presente no menu raster ...
Owen
2

Para seu primeiro objetivo, como Willy disse, você pode usar o módulo v.rast.stat. O módulo criará novas colunas preenchidas no seu banco de dados de vetores com os valores estatísticos que você procura (valor mínimo, máximo, média, desvio padrão, contagem e etc.).

Quanto à sua segunda pergunta, você precisa "ocultar" os valores abaixo (ou acima) do seu limite. Uma maneira de fazer isso é usar a calculadora raster do qgis e inserir a seguinte expressão para calcular:

(raster@1 >= 10) * raster@1

insira a descrição da imagem aqui

O parêntese criará uma máscara, o que significa que todos os valores acima de 10 terão o valor de 1 e todos os valores abaixo do valor de 0. E, em seguida, você multiplica os dois valores pelos valores originais. E obviamente 0 por algo é igual a 0.

Defina o valor do nodata como igual a 0 para o raster de máscara produzido e, em seguida, execute novamente v.rast.stats.

nickves
fonte