Respostas:
Duas maneiras fáceis possíveis:
1.)
"Corine@1" = 23
. Isso extrairá todas as células com valor 23 em uma nova varredura2.) Se você quiser uma visão geral mais sofisticada sobre o número de células rasterizadas, poderá usar o plug-in LecoS para QGIS.
EDIT 3 : Converti o código abaixo em um script SEXTANTE bastante utilizável que fornece a seguinte saída:
Instruções detalhadas e o link para download podem ser encontrados aqui .
Você pode usar o console python para esta tarefa. Copie o código fornecido abaixo, cole-o em um arquivo de texto e salve-o como "some_script.py", por exemplo. Da próxima vez que você precisar contar os valores das células, abra o console python no QGIS, pressione o botão 'show editor' e abra esse script lá. Em seguida, substitua 'raster_path' na quarta linha do script pelo caminho real da sua varredura e salve as alterações. Em seguida, execute o script e na saída do console (à esquerda do editor na captura de tela abaixo), você verá o número de células para cada valor que você possui na varredura.
Observe que você precisará ter o python-numpy instalado para que esse script funcione.
EDIT: Além disso, se você não precisar de valores exatos, mas preferir ver a distribuição de valores, use a abordagem descrita aqui .
EDIT 2: versão mais avançada do script fornecida. Agora ele trabalha com rasters multibandas e processa valores de 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)))
. Pode ser necessário garantir que você esteja executando o Python de 64 bits para evitar erros de memória. Embora eu não tenha testado como isso lida NaN
.