Estou tentando carregar um projeto .qgs existente e obter uma lista das camadas dentro. Parece que consigo abrir o projeto, mas não consigo obter a lista de camadas. Estou um pouco confuso quanto à sintaxe básica do PyQGIS, e o livro de receitas não cobre este exemplo 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()
Atualmente, isso apenas layers
retorna um ditado vazio, apesar do fato de o projeto existir e ter muitas camadas nele.
QGIS 2.18.2
etapas experimentadas do OP e @ GermánCarrillo. Qual é a versão do OP?QgsApplication.processEvents()
logo depoisproject.read
?Respostas:
Também recebo um dicionário vazio quando executo seu código, mas o seguinte funciona para mim, que é um pouco diferente:
Testado no QGIS 2.18.3 para Windows 7 de 64 bits.
Editar:
A principal diferença, acredito, entre seu código e o que eu usei é que você precisa criar o objeto QApplication antes de criar o QgsApplication. Então você precisaria substituir:
com isso:
Mas a classe QApplication precisa ser importada, portanto, devemos adicionar o seguinte:
E, finalmente, se você quiser fazer uma limpeza, adicione o seguinte no final.
Portanto, você pode tentar usar o código a seguir, mais próximo do código original:
fonte