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

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.


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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.