შიგთავსზე გადასვლა

QgsRasterLayer PyQGIS-ში

QgsRasterLayer არის QGIS-ის კლასი, რომელიც გამოიყენება რასტრული მონაცემების (მაგ. GeoTIFF, JPEG, DEM, სატელიტური სურათები და სხვ.) ჩასატვირთად და სამართავად.


🔑 ძირითადი კონცეფცია

რასტრული შრე შედგება პიქსელების მატრიცისგან. თითოეულ პიქსელს აქვს მნიშვნელობა (მაგ. სიმაღლე, ტემპერატურა, სურათის ფერი).
PyQGIS-ში QgsRasterLayer საშუალებას გაძლევს:

  • ჩატვირთო და აჩვენო სხვადასხვა ფორმატის რასტრები (GeoTIFF, ASCII GRID, JPEG, PNG და სხვ.)
  • იმუშაო მრავალბანდიან (multiband) მონაცემებთან.
  • წაიკითხო პიქსელების მნიშვნელობები.
  • გამოიყენო სტილიზაცია (symbology).
  • შეასრულო ანალიზი Raster Processing Toolbox–ით.

📂 ძირითადი ატრიბუტები

  • Datasource path – ფაილის მისამართი (მაგ. "C:/data/dem.tif")
  • Layer name – შრის სახელი QGIS პროექტში
  • Provider type – ჩვეულებრივ "gdal" (რადგან GDAL გამოიყენება რასტრული ფაილების წასაკითხად)

📝 მაგალითები

1. რასტრული ფაილის ჩატვირთვა

from qgis.core import QgsRasterLayer

path = r"C:\Users\Public\GIS\data\dem.tif"
layer_name = "Digital Elevation Model"

raster_layer = QgsRasterLayer(path, layer_name, "gdal")

if raster_layer.isValid():
    QgsProject.instance().addMapLayer(raster_layer)
    print("Raster loaded successfully!")
else:
    print("Failed to load raster.")

2. რასტრული შრის ინფორმაციის ამოღება

print("Layer name:", raster_layer.name())
print("Crs:", raster_layer.crs().authid())
print("Width:", raster_layer.width())
print("Height:", raster_layer.height())
print("Bands:", raster_layer.bandCount())

3. კონკრეტული ბანდის ინფორმაცია

provider = raster_layer.dataProvider()

# ბანდის სტატისტიკის გამოთვლა
stats = provider.bandStatistics(1)
print("Minimum:", stats.minimumValue)
print("Maximum:", stats.maximumValue)
print("Mean:", stats.mean)

4. პიქსელის მნიშვნელობის ამოღება კოორდინატიდან

from qgis.core import QgsPointXY

point = QgsPointXY(356671, 4679923)
ident = raster_layer.dataProvider().identify(point, QgsRaster.IdentifyFormatValue)

if ident.isValid():
    print("Pixel value:", ident.results())

5. სიმბოლიზაციის ცვლილება (Singleband Gray)

from qgis.core import QgsSingleBandGrayRenderer

provider = raster_layer.dataProvider()
renderer = QgsSingleBandGrayRenderer(provider, 1)  # პირველი ბანდი
raster_layer.setRenderer(renderer)
raster_layer.triggerRepaint()

6. სიმბოლიზაცია ფერადი პალიტრით (Pseudo color)

from qgis.core import QgsColorRampShader, QgsRasterShader, QgsSingleBandPseudoColorRenderer
from qgis.PyQt.QtGui import QColor

provider = raster_layer.dataProvider()
fcn = QgsColorRampShader()
fcn.setColorRampType(QgsColorRampShader.Interpolated)

# მინ/მაქს მნიშვნელობები
fcn.setColorRampItemList([
    QgsColorRampShader.ColorRampItem(0, QColor(0,0,255), 'Low'),
    QgsColorRampShader.ColorRampItem(1000, QColor(0,255,0), 'Medium'),
    QgsColorRampShader.ColorRampItem(2000, QColor(255,0,0), 'High')
])

shader = QgsRasterShader()
shader.setRasterShaderFunction(fcn)

renderer = QgsSingleBandPseudoColorRenderer(provider, 1, shader)
raster_layer.setRenderer(renderer)
raster_layer.triggerRepaint()

⚙️ გამოყენების სფეროები

  • DEM (Digital Elevation Model) → სიმაღლის ანალიზი, დახრილობა, ექსპოზიცია
  • სატელიტური სურათები → Landsat, Sentinel, MODIS
  • ოროფოტოები (Orthoimagery) → კარტოგრაფია, ტოპოგრაფიული რუკები
  • კლიმატური მონაცემები → ტემპერატურა, ნალექები

ℹ️ შენიშვნები

  • Raster always uses GDAL provider PyQGIS-ში.
  • CRS-ის დამთხვევა აუცილებელია სხვა შრეებთან სწორი გადაფარვისთვის.
  • დიდ რასტრებზე მუშაობისას შეიძლება საჭირო გახდეს pyramids და tiling.

დასკვნა

QgsRasterLayer არის PyQGIS-ის ძირითადი ინსტრუმენტი რასტრული მონაცემების სამართავად.
მისი საშუალებით შესაძლებელია როგორც მარტივი ვიზუალიზაცია, ასევე რთული გეოანალიზი Processing Toolbox-თან ერთად.