J'essaie de charger un projet .qgs existant et d'obtenir une liste des couches à l'intérieur. Il me semble que je peux ouvrir le projet, mais je ne parviens pas à obtenir la liste des couches. Je suis un peu confus quant à la syntaxe de base de PyQGIS, et le livre de recettes ne couvre pas cet exemple spécifique.
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()
Actuellement, cela layers
renvoie simplement un dict vide, malgré le fait que le projet existe et comporte de nombreuses couches.
QGIS 2.18.2
étapes éprouvées de OP et @ GermánCarrillo. Quelle est la version d'OP?QgsApplication.processEvents()
juste aprèsproject.read
?Réponses:
Je reçois également un dictionnaire vide lorsque j'exécute votre code, mais ce qui suit fonctionne pour moi, ce qui est légèrement différent:
Testé sur QGIS 2.18.3 pour Windows 7 64 bits.
Éditer:
La principale différence, je crois, entre votre code et ce que j'ai utilisé est que vous devez créer l'objet QApplication avant de créer QgsApplication. Vous devrez donc remplacer:
avec ça:
Mais la classe QApplication doit être importée, nous devons donc ajouter ce qui suit:
Et enfin, si vous voulez faire un nettoyage, vous devez ajouter ce qui suit à la fin.
Vous pouvez donc essayer d'utiliser le code suivant qui est plus proche de votre code d'origine:
la source