jueves, 30 de marzo de 2017

Contar el número de celdas de cada tipo por bloque en QGIS

En una pregunta de gis.stackexchange.com se consideró la forma de contar el número de celdas de cada tipo por bloque; pero referido al software ArcGis. Obviamente, una manera de hacer esto es con código y para ello se pueden usar las prestaciones del módulo python de GDAL o las clases de PyQGIS. Sin embargo, lo que me llamó la atención fue la ingeniosa solución aritmética de esta respuesta.



Para implementarla en QGIS se va a seguir el procedimiento allí referido para el raster de 18 filas x 18 columnas de la imagen siguiente; cuyas características adicionales son que tiene valores aleatorios entre 1 y 5 para cada celda.


A continuación, para garantizar la estadística zonal con el parámetro sum como único elemento, se creó una grid con el triple de espaciamiento de la resolución del ráster lo cual permite el muestreo por bloques de 3 x 3. Para ello se usó la herramienta 'Vector grid' que se encuentra en la Processing Tool Box de QGIS; tal como se observa en la imagen siguiente:


Ahora toca el turno al raster calculator de QGIS, con la fórmula 10^("count_cells@1" -1) en la ventana de la "Raster calculator expression". Después de click en OK se otuvo el ráster de la imagen siguiente:


Para finalizar, se realiza la estadistica zonal para el ráster count_cells_exp cuyo campo sum contiene la suma de las celdas de cada tipo expresadas como un número entero. Aunque se probó para varios casos y en todos el resultado fue satisfactorio, se seleccionó el rásgo de la imagen siguiente cuyo valor en el camp sum es 31131. Esto significa que en ese bloque de 3 x 3 existen tres celdas con valor 5, 1 celda con valor 4, 1 celda con valor 3, 3 celdas con valor 2 y una celda con valor 1. El conteo es correcto y fue verificado con el 'Value Tool' plugin de QGIS.


No hay comentarios: