Saya mencoba memuat proyek .qgs yang ada dan mendapatkan daftar lapisan di dalamnya. Saya sepertinya bisa membuka proyek, tetapi saya tidak bisa mendapatkan daftar layer. Saya agak bingung dengan sintaks PyQGIS dasar, dan buku masak tidak mencakup contoh khusus ini.
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()
Saat ini, ini hanya layers
mengembalikan dict kosong, terlepas dari kenyataan bahwa proyek itu ada dan memiliki banyak lapisan di dalamnya.
QGIS 2.18.2
langkah mencoba OP dan @ GermánCarrillo. Apa versi OP?QgsApplication.processEvents()
setelah ituproject.read
?Jawaban:
Saya juga menerima kamus kosong ketika saya menjalankan kode Anda tetapi yang berikut ini berfungsi untuk saya yang sedikit berbeda:
Diuji pada QGIS 2.18.3 untuk Windows 7 64-bit.
Edit:
Perbedaan utama, saya percaya, antara kode Anda dan apa yang saya gunakan adalah bahwa Anda perlu membuat objek QApplication sebelum membuat QgsApplication. Jadi, Anda perlu mengganti:
dengan ini:
Tetapi kelas QApplication perlu diimpor sehingga kami harus menambahkan yang berikut:
Dan akhirnya, jika Anda ingin melakukan pembersihan, Anda perlu menambahkan yang berikut di akhir.
Jadi Anda dapat mencoba menggunakan kode berikut yang lebih dekat dengan kode asli Anda:
sumber