Cargar proyectos

Algunas veces se necesita cargar un proyecto existente desde un complemento o (más a menudo) al desarrollar una aplicación autónoma QGIS Python (vea : Aplicaciones Python).

Para cargar un proyecto en la aplicación QGIS actual necesita un objeto QgsProject instance() y llamar a su método read() pasando a un objeto QFileInfo que contenga la ruta desde donde el proyecto será cargado:

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

En caso de que necesite hacer algunas modificaciones al proyecto (por ejemplo añadir o eliminar algunas capas) y guardad los cambios, se puede llamar al método write() de la instancia del proyecto. El método write() también acepta una opcional QFileInfo que le permite especificar una ruta donde el proyecto será almacenado:

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

Ambas funciones read() y write() regresan un valor booleano que se puede utilizar para validar si la operación fue un éxito.

Nota

Si esta escribiendo una aplicación autónoma de QGIS, con el fin de sincronizar el proyecto cargado con el lienzo que necesita para crear una instancia de una QgsLayerTreeMapCanvasBridge como el ejemplo siguiente:

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