processing.runalg () arroja "TypeError: no se permite la captura de clases que no heredan de BaseException"

11

Hola a todos, soy de alguna manera nuevo con PyQGIS y he estado tratando de ejecutar un script en QGIS 3.0 sin éxito (se ejecutó de manera perfecta en 2.18) y siempre obtengo el mismo error:

AttributeError: el módulo 'Processing' no tiene el atributo 'runalg' Durante el manejo de la excepción anterior, ocurrió otra excepción: Traceback (última llamada más reciente): Archivo "C: \ PROGRA ~ 1 \ QGIS3 ~ 1.0 \ apps \ Python36 \ lib \ code.py ", línea 91, en runcode exec (code, self.locals) File" ", línea 8, en TypeError: no se permite la captura de clases que no heredan de BaseException

¿Tiene esto algo que ver con PYTHONPATH? Ni siquiera puedo ver la lista de algoritmos al escribir: processing.alglist ()

LE_Geomatica
fuente

Respuestas:

10

Esta no es una respuesta a la pregunta original, sino a una pregunta de seguimiento en un comentario ("¿Cómo puedo ver la lista y las opciones de algoritmos?").

En QGIS 3, los algoritmos de procesamiento se pueden enumerar en la consola QGIS Python (Python 3) utilizando (consulte https://gis.stackexchange.com/a/274902/22646 y https://gis.stackexchange.com/a/ 274874/22646 ):

QgsApplication.processingRegistry().algorithms()

Para enumerar los nombres (ID):

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

Obtención de ayuda para un algoritmo (incluidos los parámetros de entrada y salida):

processing.algorithmHelp("qgis:union")

También hay:

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

Pero no parece incluir algoritmos de, por ejemplo, gdal y grass.

Håvard Tveite
fuente
La documentación de QGIS ahora se ha actualizado (consulte docs.qgis.org/testing/en/docs/user_manual/processing/… ).
Håvard Tveite
14

En QGIS 3, use processing.run.

Por ejemplo:

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

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

Miguel
fuente
Funciona perfectamente bien. Además, ¿cómo puedo ver la lista y las opciones de algoritmos? Intenté Processing.alglist () y Processing.list () pero ambos arrojan un error similar
LE_Geomatica