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

Projecten laden

Soms moet u een bestaand project uit een plug-in laden of (nog vaker) bij het ontwikkelen van een zelfstandige toepassing in Python voor QGIS (zie: Toepassingen in Python).

U heeft een object QgsProject instance() nodig om een project in de huidige toepassing van QGIS te laden en daarvan de methode read() aan te roepen om het door te geven aan een object QFileInfo dat het pad bevat van waaruit het project zal worden geladen:

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

Voor het geval u enige aanpassingen moet maken aan het project (bijvoorbeeld enige lagen toevoegen of verwijderen) en uw wijzigingen opslaan, kunt u de methode write() van uw instance voor het project aanroepen. De methode write() accepteert ook een optionele QFileInfo die u in staat stelt een pad te specificeren waar het project zal worden opgeslagen:

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

Beide functies read() en write() geven een Booleaanse waarde terug die u kunt gebruiken om te controleren of de bewerking succesvol was.

Notitie

U dient, als u een zelfstandige toepassing voor QGIS schrijft, een klasse QgsLayerTreeMapCanvasBridge te instantiëren zoals in het voorbeeld hieronder om het geladen project te synchroniseren met het kaartvenster:

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