processing.runalg () genera "TypeError: la cattura di classi che non ereditano da BaseException non è consentita"


11

Salve a tutti, sono in qualche modo nuovo con PyQGIS e ho provato a eseguire uno script in QGIS 3.0 senza successo (è stato eseguito in modo corretto nella versione 2.18) e ottengo sempre lo stesso errore:

AttributeError: il modulo 'elaborazione' non ha alcun attributo 'runalg' Durante la gestione dell'eccezione sopra, si è verificata un'altra eccezione: Traceback (ultima chiamata più recente): File "C: \ PROGRA ~ 1 \ QGIS3 ~ 1.0 \ apps \ Python36 \ lib \ code.py ", riga 91, in runcode exec (code, self.locals) File" ", riga 8, in TypeError: la cattura di classi che non ereditano da BaseException non è consentita

Questo ha qualcosa a che fare con PYTHONPATH? Non riesco nemmeno a vedere l'elenco degli algoritmi durante la digitazione: processing.alglist ()

Risposte:


10

Questa non è una risposta alla domanda originale, ma a una domanda di follow-up in un commento ("Inoltre, come posso vedere l'elenco e le opzioni degli algoritmi?").

In QGIS 3, gli algoritmi di elaborazione possono essere elencati nella console QGIS Python (Python 3) utilizzando (consultare https://gis.stackexchange.com/a/274902/22646 e https://gis.stackexchange.com/a/ 274874/22646 ):

QgsApplication.processingRegistry().algorithms()

Per elencare i nomi (ID):

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

Come ottenere assistenza per un algoritmo (inclusi parametri di input e output):

processing.algorithmHelp("qgis:union")

C'è anche:

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

Ma non sembra includere algoritmi per esempio da gdal ed grass.


La documentazione di QGIS è stata aggiornata (vedere docs.qgis.org/testing/en/docs/user_manual/processing/… ).
Håvard Tveite,

14

In QGIS 3, utilizzare processing.run.

Per esempio:

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

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


Funziona perfettamente. Inoltre, come posso vedere l'elenco e le opzioni degli algoritmi? Ho provato processing.alglist () e processing.list () ma entrambi generano un errore simile.
LE_Geomatica,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.