Încărcarea proiectelor

Uneori trebuie să încărcați un proiect existent dintr-un plugin, sau (mai des) atunci când dezvoltați o aplicație QGIS independentă în Python (v.: Aplicații Python).

Pentru a încărca un proiect în aplicația QGIS curentă aveți nevoie de obiectul QgsProject instance(), căruia să-i apelați metoda read(), și să o transferați obiectului QFileInfo, care conține calea de unde va fi încărcat proiectul:

# If you are not inside a QGIS console you first need to import
# qgis and PyQt4 classes you will use in this script as shown below:
from qgis.core import QgsProject
from PyQt4.QtCore import QFileInfo
# Get the project instance
project = QgsProject.instance()
# Print the current project file name (might be empty in case no projects have been loaded)
print project.fileName
u'/home/user/projects/my_qgis_project.qgs'
# Load another project
project.read(QFileInfo('/home/user/projects/my_other_qgis_project.qgs'))
print project.fileName
u'/home/user/projects/my_other_qgis_project.qgs'

În cazul în care trebuie să faceți unele modificări la proiect (de exemplu, să adăugați sau să eliminați unele straturi), apoi să salvați modificările, puteți apela metoda write() asupra instanței proiectului. De asemenea, metoda write() acceptă QFileInfo, opțional, care vă permite să specificați o cale în care va fi salvat proiectul:

# Save the project to the same
project.write()
# ... or to a new file
project.write(QFileInfo('/home/user/projects/my_new_qgis_project.qgs'))

Ambele funcții, read() și write(), returnează o valoare booleană, pe care o puteți folosi pentru a verifica dacă operația a avut succes.

Note

Dacă scrieți o aplicație QGIS de sine stătătoare, în scopul sincronizării proiectului încărcat în canevas, trebuie să instanțiați o clasă QgsLayerTreeMapCanvasBridge, ca în exemplul de mai jos:

bridge = QgsLayerTreeMapCanvasBridge( \
         QgsProject.instance().layerTreeRoot(), canvas)
# Now you can safely load your project and see it in the canvas
project.read(QFileInfo('/home/user/projects/my_other_qgis_project.qgs'))