📝 დავალება 5¶
საჭირო თემები: რასტრის სტატისტიკა, რელიეფი
მონაცემები: sample_data/practice/task_05/ (Raster/srtm_45_04.tif, shp/geo_regions.shp)
ნაწილი 1¶
- ჩატვირთეთ რასტრი
srtm_45_04და PyQGIS-ით კონსოლში დაბეჭდეთminimumValue,maximumValue,mean,sumOfSquares. -
რასტრი გადააკლასიფიცირეთ სამ კლასად:
- კლასი 1: -5 … 0
- კლასი 2: 0 … 2000
- კლასი 3: 2000 … 3500
შედეგი:
srtm_45_04_reclassified.tif. 3. ააგეთ ამავე რასტრის ჰისტოგრამა PyQGIS-ით.
ამოხსნა 1.1
ამოხსნა 1.2
ამოხსნა 1.3
import matplotlib.pyplot as plt
bins = 50
h = rl.dataProvider().histogram(1, bins, st.minimumValue, st.maximumValue)
step = (st.maximumValue - st.minimumValue) / bins
xs = [st.minimumValue + i * step for i in range(bins)]
plt.bar(xs, h.histogramVector, width=step, align='edge')
plt.xlabel('Elevation (m)'); plt.ylabel('Pixels')
plt.savefig(base + '/Raster/histogram.png')
plt.show()
ნაწილი 2¶
srtm_45_04-დან PyQGIS-ით ამოიღეთ იზოჰიფსები (კონტურები) 200 მ ინტერვალით.\shpსაქაღალდიდან ჩატვირთეთgeo_regions.shp. რასტრი მოჭერით სამეგრელო-ზემო სვანეთის რეგიონით, ააგეთ მოჭრილი რასტრის ჰისტოგრამა და შედეგს დაარქვითSamegrelo_z_s.tif.- კონსოლში დაბეჭდეთ
Samegrelo_z_s.tif-ის სტრიქონებისა და სვეტების რაოდენობა.
ამოხსნა 2.1
ამოხსნა 2.2 – 2.3
regions = QgsVectorLayer(base + '/shp/geo_regions.shp', 'geo_regions', 'ogr')
mask = processing.run('native:extractbyexpression', {
'INPUT': regions,
'EXPRESSION': '"name_en" = \'Samegrelo-Zemo Svaneti\'', # შეამოწმეთ ცხრილში
'OUTPUT': 'memory:'})['OUTPUT']
out = base + '/Raster/Samegrelo_z_s.tif'
processing.run('gdal:cliprasterbymasklayer', {
'INPUT': dem, 'MASK': mask, 'CROP_TO_CUTLINE': True,
'NODATA': -9999, 'OUTPUT': out})
clip = QgsRasterLayer(out, 'Samegrelo_z_s')
print('rows:', clip.height(), 'columns:', clip.width())
rl-ის ნაცვლად clip-ით.