기존 .qgs 프로젝트를로드하고 내부 레이어 목록을 가져 오려고합니다. 프로젝트를 열 수있는 것 같지만 레이어 목록을 얻을 수 없습니다. 기본 PyQGIS 구문에 대해 약간 혼란스럽고 요리 책은이 특정 예를 다루지 않습니다.
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()
현재 layers
프로젝트가 존재하고 많은 레이어가 있음에도 불구하고 빈 dict를 반환합니다.
당시 Windows 7x64에서 QGIS 2.16.2를 사용하고있었습니다. 이후 2.18.2에서 시도했지만 여전히 작동하지 않았습니다.
—
KJYDavis
내가 링크 된 질문은 QGIS 내에서 적용되기 때문에 재개에 대한이 질문에 플래그하지만,이 솔루션은 독립형 파이썬 스크립트에서 작업을하지 않습니다
—
라파엘
시도해 보셨습니까 : layers = QgsMapLayerRegistry.instance (). mapLayers (). keys ()
—
Albert
당신은
—
Matthias Kuhn
QgsApplication.processEvents()
바로 삽입 할 수 있습니까 project.read
?
QGIS 2.18.2
OP와 @ GermánCarrillo의 시도 단계 에서 동일한 문제가 있습니다. OP의 버전은 무엇입니까?