¿Sumar valores de píxeles dentro de la zona poligonal en QGIS?

8

Tengo dos capas: una capa ráster y una capa vectorial (polígono). Puedo ver los valores de los píxeles de trama, pero no sé cómo combinarlos con la información de la capa de polígono. Más específicamente, me gustaría:

  1. Sumar valores de todos los píxeles dentro de los bordes de un polígono
  2. contar la cantidad de píxeles con un valor específico dentro de los bordes de un polígono

¿Alguien puede ayudar y aconsejar sobre cómo hacer esto en QGIS?

Alex
fuente
No estoy seguro de todo el proceso en QGIS, pero creo que el primer paso sería convertir su ráster en una capa vectorial. Puede usar la herramienta Polygonize de QGIS y usar su capa de polígono como una máscara.
Baltok

Respuestas:

6

Solía ​​ser que tenía que usar v.rast.stats en el complemento GRASS, pero ahora puede usar las estadísticas zonales incorporadas en el menú Ráster.

Tiene una capa de polígono cargada y el ráster. Ejecutas el elemento del menú.

eso responderá la parte a) de su pregunta.

v.rast.stats y otras herramientas le proporcionarán resultados más detallados, pero probablemente un flujo de trabajo simple para b) es extraer cada polígono (use el menú Ráster | Extracción | Clipper) y luego ejecutar un histograma en cada uno. Depende de la estructura de sus datos, con qué frecuencia tiene que hacerlo, etc.

Colita
fuente
recuerde que también se puede acceder a las funciones de hierba con el complemento sextante. Con la nueva versión de qgis sextane se ha integrado en él (no más como un complemento, sino como un componente central), por lo que también es un buen momento para aprenderlo.
nickves
sólo en caso de cualquier otra persona se atasca, Zonal Statistics es un plugin que tiene que instalar / habilitar a través del menú de plugins - de lo contrario no estará presente en el menú de la trama ...
Owen
2

Para su primer objetivo, como dijo Willy, puede usar el módulo v.rast.stat. El módulo creará nuevas columnas pobladas en su base de datos de vectores con los valores estadísticos que está buscando (valor mínimo, máximo, media, desviación estándar, conteo , etc.).

En cuanto a su segunda pregunta, debe "ocultar" los valores que están por debajo (o por encima) de su umbral. Una forma de hacerlo es usando la calculadora ráster de qgis e ingresando la siguiente expresión para calcular:

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

ingrese la descripción de la imagen aquí

El paréntesis creará una máscara, lo que significa que todos los valores por encima de 10 tomarán el valor de 1 y todos los valores por debajo del valor de 0. Y a continuación, multiplique ambos valores con los valores originales. Y obviamente 0 por algo es igual a 0.

Establezca el valor de nodata para que sea igual a 0 para la máscara-raster producida y luego vuelva a ejecutar v.rast.stats.

nickves
fuente