Outdated version of the documentation. Find the latest one here.

Chargement de projets

Parfois, vous avez besoin de charger un projet existant depuis une extension ou (plus courant) depuis une application tierce en python (voir: Applications Python).

Pour charger un projet dans l’application QGIS en cours, il vous faut une instance() de la classe QgsProject dont vous appelez la méthode read() en lui passant l’objet QFileInfo qui contient le chemin du projet à charger:

# 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'

Si vous souhaitez apporter des modifications au projet (par exemple ajouter ou supprimer des couches) et enregistrer vos changements, vous pouvez appeler la méthode write() de votre instance de projet. La méthode write() accepte également une variable optionnelle QFileInfo qui permet de spécifier le chemin de sauvegarde du projet:

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

Les fonctions read() et write() renvoient un booléen que vous pouvez utiliser pour vérifier si l’opération a réussi ou pas.

Note

Si vous écrivez une application QGIS indépendante, pour synchroniser le projet en cours avec le canevas, vous devez instancier QgsLayerTreeMapCanvasBridge comme dans l’exemple ci-dessous:

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'))