processing.runalg () melempar “TypeError: menangkap kelas yang tidak diwarisi dari BaseException tidak diizinkan”

11

Hai semua orang, saya dalam beberapa hal baru dengan PyQGIS dan saya sudah mencoba menjalankan skrip di QGIS 3.0 tanpa hasil (sebelumnya berjalan di 2.18) dan selalu mendapatkan kesalahan yang sama:

AttributeError: modul 'processing' tidak memiliki atribut 'runalg' Selama penanganan pengecualian di atas, pengecualian lain terjadi: Traceback (panggilan terakhir terakhir): File "C: \ PROGRA ~ 1 \ QGIS3 ~ 1.0 \ apps \ Python36 \ lib \ code.py ", baris 91, dalam file runcode exec (kode, self.locals)" ", baris 8, dalam TypeError: menangkap kelas yang tidak mewarisi dari BaseException tidak diizinkan

Apakah ini ada hubungannya dengan PYTHONPATH? Saya bahkan tidak bisa melihat daftar algoritma saat mengetik: processing.alglist ()

LE_Geomatica
sumber

Jawaban:

10

Ini bukan jawaban untuk pertanyaan awal, tetapi untuk pertanyaan lanjutan dalam komentar ("Juga bagaimana saya bisa melihat daftar dan opsi algoritma?").

Di QGIS 3, algoritme pemrosesan dapat dicantumkan di konsol Python QGIS (Python 3) menggunakan (lihat https://gis.stackexchange.com/a/274902/22646 dan https://gis.stackexchange.com/a/ 274874/22646 ):

QgsApplication.processingRegistry().algorithms()

Untuk daftar nama (ID):

for alg in QgsApplication.processingRegistry().algorithms(): print(alg.id())

Mendapatkan bantuan untuk suatu algoritma (termasuk parameter input dan output):

processing.algorithmHelp("qgis:union")

Ada juga:

processing.algs.help.shortHelp.keys()
print("\n".join(processing.algs.help.shortHelp.keys()))

Tetapi sepertinya tidak termasuk algoritma dari misalnya gdal dan rumput.

Håvard Tveite
sumber
Dokumentasi QGIS sekarang telah diperbarui (lihat docs.qgis.org/testing/en/docs/user_manual/processing/… ).
Håvard Tveite
14

Di QGIS 3, gunakan processing.run.

Contohnya:

QGIS 2.x processing.runalg('gdalogr:convertformat', ...

QGIS 3.0 processing.run('gdal:convertformat', ...

Mike
sumber
Ini bekerja dengan sangat baik. Juga bagaimana saya bisa melihat daftar dan opsi algoritma? Saya sudah mencoba processing.alglist () dan processing.list () tetapi keduanya memiliki kesalahan yang sama.
LE_Geomatica