जवाबों:
दो संभव आसान तरीके:
1.)
"Corine@1" = 23
। यह सभी कोशिकाओं को एक नए रेखापुंज में मान 23 के साथ निकालेगा2.) यदि आप रेखापुंज कोशिकाओं की संख्या पर अधिक परिष्कृत अवलोकन चाहते हैं तो आप QGIS के लिए LecoS प्लगइन का उपयोग कर सकते हैं।
EDIT 3 : मैंने नीचे दिए गए कोड को काफी प्रयोग योग्य STEANTE स्क्रिप्ट में परिवर्तित किया जो निम्न आउटपुट देता है:
विस्तृत निर्देश और डाउनलोड लिंक यहां पाया जा सकता है ।
आप इस कार्य के लिए अजगर कंसोल का उपयोग कर सकते हैं। नीचे दिए गए कोड को कॉपी करें, इसे एक टेक्स्ट फ़ाइल में पेस्ट करें और उदाहरण के लिए इसे "some_script.py" के रूप में सहेजें। अगली बार आपको QGIS में सेल वैल्यू ओपन पाइथन कंसोल, हिट 'शो एडिटर' बटन को गिनना होगा और वहां इस स्क्रिप्ट को खोलना होगा। फिर स्क्रिप्ट में अगली पंक्ति में 'raster_path' को अपने रैस्टर के वास्तविक पथ के साथ बदलें और परिवर्तनों को सहेजें। फिर स्क्रिप्ट चलाएं और कंसोल आउटपुट में (नीचे स्क्रीनशॉट पर संपादक से बाईं ओर) आप रेखापुंज में आपके पास हर मूल्य के लिए कोशिकाओं की संख्या देखेंगे।
ध्यान दें कि इस स्क्रिप्ट को काम करने के लिए आपको अजगर-सुन्न स्थापित करने की आवश्यकता होगी।
संपादित करें: इसके अलावा, यदि आपको सटीक मानों की आवश्यकता नहीं है, लेकिन आप मानों का वितरण देखना चाहते हैं, तो आप यहाँ वर्णित दृष्टिकोण का उपयोग कर सकते हैं ।
EDIT 2: प्रदान की गई स्क्रिप्ट का अधिक अग्रिम संस्करण। अब यह मल्टी बैंड रस्टर्स के साथ काम करता है और 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)))
। आपको यह सुनिश्चित करने की आवश्यकता हो सकती है कि आप मेमोरी त्रुटियों से बचने के लिए 64-बिट पायथन चला रहे हैं। हालांकि मैंने परीक्षण नहीं किया है कि यह कैसे संभालता है NaN
।