Respuestas:
Dos posibles formas fáciles:
1.)
"Corine@1" = 23
. Esto extraerá todas las celdas con valor 23 en un nuevo ráster2.) Si desea una visión general más sofisticada sobre el número de celdas ráster, puede usar el complemento LecoS para QGIS.
EDITAR 3 : Convertí el código a continuación en un script SEXTANTE bastante utilizable que proporciona el siguiente resultado:
Las instrucciones detalladas y el enlace de descarga se pueden encontrar aquí .
Puede usar la consola de Python para esta tarea. Copie el código proporcionado a continuación, péguelo en un archivo de texto y guárdelo como "some_script.py", por ejemplo. La próxima vez que necesite contar los valores de celda, abra la consola de Python en QGIS, presione el botón 'mostrar editor' y abra este script allí. Luego reemplace 'raster_path' en la cuarta fila del script con la ruta real a su ráster y guarde los cambios. Luego ejecute el script y en la salida de la consola (a la izquierda del editor en la captura de pantalla a continuación) verá el número de celdas para cada valor que tenga en el ráster.
Tenga en cuenta que necesitará tener python-numpy instalado para que este script funcione.
EDITAR: Además, si no necesita valores exactos pero prefiere ver la distribución de valores, puede usar el enfoque descrito aquí .
EDIT 2: se proporciona una versión más avanzada del script. Ahora funciona con rásteres multibanda y procesa valores NaN.
from osgeo import gdal
import sys
import math
path = "raster_path"
gdalData = gdal.Open(path)
if gdalData is None:
sys.exit( "ERROR: can't open raster" )
# get width and heights of the raster
xsize = gdalData.RasterXSize
ysize = gdalData.RasterYSize
# get number of bands
bands = gdalData.RasterCount
# process the raster
for i in xrange(1, bands + 1):
band_i = gdalData.GetRasterBand(i)
raster = band_i.ReadAsArray()
# create dictionary for unique values count
count = {}
# count unique values for the given band
for col in range( xsize ):
for row in range( ysize ):
cell_value = raster[row, col]
# check if cell_value is NaN
if math.isnan(cell_value):
cell_value = 'Null'
# add cell_value to dictionary
try:
count[cell_value] += 1
except:
count[cell_value] = 1
# print results sorted by cell_value
for key in sorted(count.iterkeys()):
print "band #%s - %s: %s" %(i, key, count[key])
count = dict(zip(*numpy.unique(a, return_counts=True)))
. Sin embargo, es posible que deba asegurarse de que está ejecutando Python de 64 bits para evitar errores de memoria. Aunque no he probado cómo se maneja eso NaN
.