process.runalg () löst "TypeError: Das Abfangen von Klassen, die nicht von BaseException erben, ist nicht zulässig" aus.

11

Hallo allerseits, ich bin irgendwie neu in PyQGIS und habe versucht, ein Skript in QGIS 3.0 ohne Erfolg auszuführen (es lief perfekt in 2.18) und erhalte immer den gleichen Fehler:

AttributeError: Modul 'Verarbeitung' hat kein Attribut 'Runalg' Während der Behandlung der obigen Ausnahme ist eine weitere Ausnahme aufgetreten: Traceback (letzter Aufruf zuletzt): Datei "C: \ PROGRA ~ 1 \ QGIS3 ~ 1.0 \ apps \ Python36 \ lib \ code.py ", Zeile 91, in der Datei runcode exec (code, self.locals)" ", Zeile 8, in TypeError: Das Abfangen von Klassen, die nicht von BaseException erben, ist nicht zulässig

Hat das etwas mit PYTHONPATH zu tun? Ich kann nicht einmal die Liste der Algorithmen sehen, wenn ich Folgendes schreibe: process.alglist ()

LE_Geomatica
quelle

Antworten:

10

Dies ist keine Antwort auf die ursprüngliche Frage, sondern auf eine Folgefrage in einem Kommentar ("Wie kann ich auch die Liste und die Optionen der Algorithmen anzeigen?").

In QGIS 3 können die Verarbeitungsalgorithmen in der QGIS Python-Konsole (Python 3) mithilfe von (siehe /gis//a/274902/22646 und /gis//a/ ) aufgelistet werden. 274874/22646 ):

QgsApplication.processingRegistry().algorithms()

So listen Sie die Namen (IDs) auf:

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

Hilfe für einen Algorithmus erhalten (einschließlich Eingabeparameter und Ausgabe):

processing.algorithmHelp("qgis:union")

Es gibt auch:

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

Es scheint jedoch keine Algorithmen von beispielsweise GDAL und Gras zu enthalten.

Håvard Tveite
quelle
Die QGIS-Dokumentation wurde jetzt aktualisiert (siehe docs.qgis.org/testing/en/docs/user_manual/processing/… ).
Håvard Tveite
14

Verwenden Sie in QGIS 3 processing.run.

Zum Beispiel:

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

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

Mike
quelle
Es funktioniert einwandfrei. Wie kann ich auch die Liste und die Optionen der Algorithmen anzeigen? Ich habe Processing.alglist () und Processing.list () ausprobiert, aber beide werfen einen ähnlichen Fehler auf.
LE_Geomatica