Réponses:
Deux façons simples possibles:
1.)
"Corine@1" = 23
. Cela extraira toutes les cellules de valeur 23 dans un nouveau raster2.) Si vous souhaitez une vue d'ensemble plus sophistiquée du nombre de cellules raster, vous pouvez utiliser le plug-in LecoS pour QGIS.
EDIT 3 : J'ai converti le code ci-dessous en script SEXTANTE assez utilisable qui donne la sortie suivante:
Des instructions détaillées et le lien de téléchargement peuvent être trouvés ici .
Vous pouvez utiliser la console python pour cette tâche. Copiez le code fourni ci-dessous, collez-le dans un fichier texte et enregistrez-le sous "some_script.py" par exemple. La prochaine fois, vous devrez compter les valeurs des cellules. Ouvrez la console Python dans QGIS, appuyez sur le bouton «Afficher l'éditeur» et ouvrez ce script là. Remplacez ensuite «raster_path» dans la quatrième ligne du script par le chemin réel vers votre raster et enregistrez les modifications. Ensuite, exécutez le script et dans la sortie de la console (à gauche de l'éditeur sur la capture d'écran ci-dessous), vous verrez le nombre de cellules pour chaque valeur que vous avez dans le raster.
Notez que vous devrez installer python-numpy pour que ce script fonctionne.
EDIT: De plus, si vous n'avez pas besoin de valeurs exactes mais que vous préférez voir la distribution des valeurs, vous pouvez utiliser l'approche décrite ici .
EDIT 2: version plus avancée du script fournie. Maintenant, il fonctionne avec des rasters multi-bandes et traite les valeurs 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)))
. Cependant, vous devrez peut-être vous assurer que vous exécutez Python 64 bits pour éviter les erreurs de mémoire. Bien que je n'aie pas testé comment cela fonctionne NaN
.