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 ()

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.


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', ...


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.