Estoy tratando de cargar un proyecto .qgs existente y obtener una lista de las capas dentro. Parece que puedo abrir el proyecto, pero no puedo obtener la lista de capas. Estoy un poco confundido en cuanto a la sintaxis básica de PyQGIS, y el libro de cocina no cubre este ejemplo específico.
from qgis.core import *
from PyQt4.QtCore import QFileInfo
QgsApplication.setPrefixPath(r"C:\OSGeo4W\apps\qgis-ltr", True)
qgs = QgsApplication([], False)
qgs.initQgis()
# Get the project instance
project = QgsProject.instance()
# Open the project
project.read(QFileInfo(
r'C:\path\to\project\project.qgs'))
print project.fileName()
# Get the layers in the project
layers = QgsMapLayerRegistry.instance().mapLayers()
print layers
qgs.exitQgis()
Actualmente, esto solo layers
devuelve un dict vacío, a pesar de que el proyecto existe y tiene muchas capas.
QGIS 2.18.2
pasos probados de OP y @ GermánCarrillo. ¿Cuál es la versión de OP?QgsApplication.processEvents()
justo despuésproject.read
?Respuestas:
También recibo un diccionario vacío cuando ejecuto su código, pero lo siguiente funciona para mí, que es ligeramente diferente:
Probado en QGIS 2.18.3 para Windows 7 de 64 bits.
Editar:
La principal diferencia, creo, entre su código y lo que usé es que necesita crear el objeto QApplication antes de crear QgsApplication. Entonces necesitarías reemplazar:
con este:
Pero la clase QApplication debe importarse, por lo que debemos agregar lo siguiente:
Y finalmente, si desea hacer una limpieza, debe agregar lo siguiente al final.
Por lo tanto, puede intentar usar el siguiente código que está más cerca de su código original:
fuente