processing.runalg () zgłasza „TypeError: łapanie klas, które nie dziedziczą z BaseException jest niedozwolone”

11

Cześć wszystkim, jestem w jakiś sposób nowy z PyQGIS i starałem się uruchomić skrypt w QGIS 3.0 bez powodzenia (działał idealnie w 2.18) i zawsze pojawia się ten sam błąd:

AttributeError: moduł „przetwarzanie” nie ma atrybutu „runalg” Podczas obsługi powyższego wyjątku wystąpił inny wyjątek: Traceback (ostatnie ostatnie połączenie): Plik „C: \ PROGRA ~ 1 \ QGIS3 ~ 1.0 \ apps \ Python36 \ lib \ code.py ”, wiersz 91, w pliku runcode exec (kod, self.locals) Plik„ ”, wiersz 8, w TypeError: łapanie klas, które nie dziedziczą z BaseException jest niedozwolone

Czy to ma coś wspólnego z PYTHONPATH? Nie widzę nawet listy algorytmów podczas pisania: processing.alglist ()

LE_Geomatica
źródło

Odpowiedzi:

10

To nie jest odpowiedź na pierwotne pytanie, ale na pytanie uzupełniające w komentarzu („Jak mogę zobaczyć listę i opcje algorytmów?”).

W QGIS 3 algorytmy przetwarzania można wyświetlić w konsoli QGIS Python (Python 3), używając (patrz https://gis.stackexchange.com/a/274902/22646 i https://gis.stackexchange.com/a/ 274874/22646 ):

QgsApplication.processingRegistry().algorithms()

Aby wyświetlić listę nazwisk (identyfikatorów):

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

Uzyskiwanie pomocy dla algorytmu (w tym parametrów wejściowych i danych wyjściowych):

processing.algorithmHelp("qgis:union")

Jest również:

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

Ale wydaje się, że nie obejmuje algorytmów na przykład gdal i trawy.

Håvard Tveite
źródło
Dokumentacja QGIS została teraz zaktualizowana (patrz docs.qgis.org/testing/en/docs/user_manual/processing/… ).
Håvard Tveite
14

W QGIS 3 użyj processing.run.

Na przykład:

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

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

Mikrofon
źródło
Działa idealnie dobrze. Jak mogę zobaczyć listę i opcje algorytmów? Próbowałem processing.alglist () i processing.list (), ale oba generują podobny błąd.
LE_Geomatica