Como resumir os valores de pixel no QGIS?


10

Eu preciso saber o valor da soma de todos os pixels em uma varredura. No entanto, na seção Estatísticas da guia Metadados em Propriedades, em Soma de todas as células, sempre indica 0,00. Eu tentei com diferentes formatos de varredura sem sucesso. O que estou fazendo de errado? Como posso obter esse valor?


Estou interessado na sua aplicação deste método, se você não se importa em compartilhar.
MLowry

Certifique-se de verificar seus cálculos, fiz uma verificação rápida com uma varredura que contém valores ausentes, a média é realmente calculada em todas as células da varredura, no entanto, multiplicar essa média pela largura e altura da varredura não resulta em uma soma correta. deve corrigir a quantidade de células rasterizadas que consistem em valores ausentes!

Respostas:


9
  1. Crie um polígono usando Vetor> Ferramentas de pesquisa> Polígono a partir da extensão da camada. aqui a camada é a varredura em questão.
  2. Ative / instale o plug-in de estatísticas da zona.
  3. Use o plug-in de estatísticas zonais em que a varredura é aquela cuja soma é necessária e o polígono é o que você criou a partir da extensão da camada. Digite o prefixo da coluna de saída (diga stats_). Execute o plugin.
  4. Abra a tabela de atributos do polígono. Agora você tem a coluna stats_sum junto com outras colunas com o prefixo stats_.
  5. Eu verifiquei os valores no GRASS GIS e a combinação é perfeita.

Isso não funciona no QGIS 2.18. Não tenho certeza de como isso poderia ter funcionado, pois "Polígono da extensão da camada" usa uma camada vetorial e não uma varredura como entrada. As camadas de varredura não aparecem na lista suspensa e, se você carregar a camada de varredura externamente, a camada de extensão resultante ficará vazia.
Stephen Bosch

Funciona para mim na versão 2.18.
Mckus

4

No QGIS 2.x, você pode obter estatísticas de varredura para toda a camada (incluindo a soma de todos os valores de pixel na banda) usando o algoritmo de estatísticas da camada de varredura na caixa de ferramentas Processamento.

Processamento | Caixa de ferramentas (caixa de seleção)

então vá para a caixa de ferramentas Processing:

Geoalgoritmos QGIS | Ferramentas raster | Estatísticas da camada de varredura

Gere as estatísticas para a camada que você deseja inspecionar. Os resultados são armazenados nos metadados da camada, que são acessíveis clicando com o botão direito do mouse na camada e escolhendo Propriedades.


1

Entendi a pergunta como: Como obtenho a soma de todos os valores de pixel de uma varredura? Algo como executar Estatísticas nos atributos de um vetor. Pode-se fazer isso facilmente via programação. Posso pensar em outra maneira de fazer isso via QGIS. Seria ineficiente e um pouco impreciso, mas funcionará.

  • Crie uma camada de ponto representando cada pixel da varredura. Você pode fazer isso via Vector -> Ferramentas de pesquisa -> Pontos regulares. Use o número de pontos como x_size * y_size. Portanto, para uma varredura de 100 px de largura x 100px de altura, use 10000. Especifique um deslocamento de (resolução de pixel) / 2, para fazer uma amostragem no centro do pixel.
  • Em seguida, instale o plug-in Point Sampling. Usando este plug-in, você pode experimentar a varredura em todos os 10000 pontos e obter um valor de atributo que é o valor de pixel.
  • Execute Vector -> Analysis -> Basic Statistics no vetor resultante para obter a soma.

1

Você pode usar o gdalinfo para obter estatísticas de varredura, por exemplo:

gdalinfo -stats filename.tif

Isso fornecerá o valor médio do pixel e o tamanho da varredura em pixels. Você também pode obter esses dados na guia Propriedades -> Metadados.

Então é uma questão de aritmética: valor médio x (altura em pixels x largura em pixels).

Usuario.


4
Isso esta errado. Primeiro, essas estatísticas nem sempre estão presentes (depende do aplicativo que gravou o arquivo) e, se estiverem presentes, você não pode ter certeza de que elas estão realmente corretas. Segundo, a multiplicação ignora a possibilidade de haver valores Sem dados (nesse caso, esse cálculo estaria errado).
Robert Hijmans

0

Você pode usar python:

import gdal
import numpy as np
ds = gdal.Open(r'C:\somefolder\someraster.tif')
band1 = ds.GetRasterBand(1).ReadAsArray()
s = np.sum(band1)
print(s)

-1

Espero ter acertado você; Tentei reconstruir o seu problema com um Raster meu. A soma de todos os pixels em uma varredura é de x-pixels * y-pixels, certo? Este valor pode ser obtido de duas maneiras: 1) Clique com o botão direito do mouse no arquivo real (no meu caso), a janela de detalhes deve fornecer essas informações 2) Dentro dos Gis, clique em Raster-> Diversos-> Informações. Selecione seu arquivo-> editar-> ok. Então você deve os dois valores, que precisam ser multiplicados. O resultado é a soma de todos os pixels em uma varredura.


2
Errado. Isso daria o número de células. Não é a soma dos valores das células
Robert Hijmans
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.