QgsProject¶
QgsProject არის PyQGIS-ის ერთ-ერთი ყველაზე მნიშვნელოვანი კლასი, რომელიც გამოიყენება QGIS პროექტის (.qgz ან .qgs) ფაილების სამართავად.
ამ კლასის საშუალებით შესაძლებელია:
- არსებული პროექტის გახსნა
- ახალი პროექტის შექმნა
- პროექტის შენახვა
- ფენების დამატება/ამოღება პროექტიდან
- პროექტის თვისებების მართვა (CRS, გზები, ჩანაწერები)
📌 ძირითადი მეთოდები და ატრიბუტები¶
1. QgsProject.instance()¶
QGIS-ში არსებობს მხოლოდ ერთი აქტიური პროექტი. მისი წვდომა ხდება instance() მეთოდით.
2. setFileName(path)¶
პროექტის ფაილის მისამართის მითითება.
3. read(path) – პროექტის გახსნა¶
არსებული .qgz ან .qgs ფაილის ჩატვირთვა.
4. write()¶
პროექტის შენახვა იმავე ფაილში, რომელსაც მიენიჭა setFileName().
ან ახალი სახელით:
5. ფენების დამატება პროექტში¶
შეიძლება დავამატოთ როგორც ვექტორული, ისე რასტრული ფენები.
from qgis.core import QgsVectorLayer, QgsRasterLayer
# ვექტორული ფენის დამატება
vlayer = QgsVectorLayer("C:/Users/Public/Documents/GIS/roads.shp", "Roads", "ogr")
project.addMapLayer(vlayer)
# რასტრული ფენის დამატება
rlayer = QgsRasterLayer("C:/Users/Public/Documents/GIS/dem.tif", "DEM")
project.addMapLayer(rlayer)
6. removeMapLayer(layer)¶
ფენის წაშლა პროექტიდან.
7. mapLayers()¶
პროექტში არსებული ყველა ფენის dictionary-ს დაბრუნება (layer_id: layer_object).
layers = project.mapLayers()
for layer_id, layer in layers.items():
print(layer.name(), layer.type())
8. CRS (Coordinate Reference System) პროექტისთვის¶
პროექტის ძირითადი CRS-ის დაყენება.
from qgis.core import QgsCoordinateReferenceSystem
crs = QgsCoordinateReferenceSystem("EPSG:4326") # WGS84
project.setCrs(crs)
📌 სრული მაგალითი¶
from qgis.core import QgsProject, QgsVectorLayer, QgsRasterLayer, QgsCoordinateReferenceSystem
# პროექტის ინსტანსის მიღება
project = QgsProject.instance()
# ფაილის სახელის მინიჭება
project.setFileName("C:/Users/Public/Documents/GIS/my_project.qgz")
# ვექტორული ფენის დამატება
roads = QgsVectorLayer("C:/Users/Public/Documents/GIS/roads.shp", "Roads", "ogr")
project.addMapLayer(roads)
# რასტრული ფენის დამატება
dem = QgsRasterLayer("C:/Users/Public/Documents/GIS/dem.tif", "DEM")
project.addMapLayer(dem)
# CRS დაყენება
crs = QgsCoordinateReferenceSystem("EPSG:32638") # UTM Zone 38N
project.setCrs(crs)
# პროექტის შენახვა
project.write()
📖 დასკვნა¶
QgsProject გვაძლევს საშუალებას ვმართოთ მთელი QGIS პროექტი პროგრამულად.
სტუდენტებისთვის ეს არის ერთ-ერთი საბაზისო თემა, რადგან პრაქტიკულად ყველა PyQGIS სკრიპტში საჭიროა პროექტის ფენებთან მუშაობა.