উত্তর:
দুটি সম্ভব সহজ উপায়:
১)
"Corine@1" = 23
। এটি 23 মান সহ সমস্ত কক্ষগুলিকে একটি নতুন রাস্টার হিসাবে বের করবে২) আপনি যদি রাস্টার কোষগুলির সংখ্যার উপর আরও পরিশীলিত ওভারভিউ চান তবে আপনি কিউজিআইএস-এর জন্য লেকোস প্লাগইন ব্যবহার করতে পারেন।
সম্পাদনা 3 : আমি নীচের কোডটিকে যথেষ্ট ব্যবহারযোগ্য SEXTANTE স্ক্রিপ্টে রূপান্তর করেছি যা নিম্নলিখিত আউটপুট দেয়:
বিস্তারিত নির্দেশনা এবং ডাউনলোড লিঙ্কটি এখানে পাওয়া যাবে ।
আপনি এই কাজের জন্য পাইথন কনসোল ব্যবহার করতে পারেন। নীচে প্রদত্ত কোডটি অনুলিপি করুন, এটি একটি পাঠ্য ফাইলে আটকান এবং উদাহরণস্বরূপ "" কিছু_স্ক্রিপ্ট.পি "হিসাবে সংরক্ষণ করুন। পরের বার আপনি কিউজিআইএসে পাইথন কনসোল খোলে সেল মানগুলি গণনা করতে হবে, 'শো সম্পাদক' বোতামটি চাপুন এবং এই স্ক্রিপ্টটি সেখানে খুলুন। তারপরে স্ক্রিপ্টের সামনের সারিতে 'রাস্টার_পথ' প্রতিস্থাপন করুন আপনার রাস্টারটির আসল পথ দিয়ে এবং পরিবর্তনগুলি সংরক্ষণ করুন। তারপরে স্ক্রিপ্টটি চালান এবং কনসোল আউটপুটে (নীচে স্ক্রিনশটের সম্পাদক থেকে বাম দিকে) আপনি রাস্টারটিতে থাকা প্রতিটি মানের জন্য কোষের সংখ্যা দেখতে পাবেন।
নোট করুন যে এই স্ক্রিপ্টটি কাজ করার জন্য আপনাকে পাইথন-নম্পি ইনস্টল করতে হবে।
সম্পাদনা: এছাড়াও, আপনার যদি সঠিক মানগুলির প্রয়োজন না হয় তবে আপনি মানগুলির বন্টন দেখতে চান তবে আপনি এখানে বর্ণিত পদ্ধতির ব্যবহার করতে পারেন ।
সম্পাদনা 2: স্ক্রিপ্টের আরও অগ্রিম সংস্করণ সরবরাহ করা হয়েছে। এখন এটি মাল্টি ব্যান্ড রাস্টারগুলির সাথে কাজ করে এবং এনএএন মানগুলি প্রক্রিয়া করে।
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
।