processing.runalg () renvoie "TypeError: intercepter les classes qui n'héritent pas de BaseException n'est pas autorisé"

11

Salut tout le monde, je suis en quelque sorte nouveau avec PyQGIS et j'ai essayé d'exécuter un script dans QGIS 3.0 sans succès (il fonctionnait de préférence en 2.18) et j'ai toujours la même erreur:

AttributeError: le module 'processing' n'a pas d'attribut 'runalg' Lors de la gestion de l'exception ci-dessus, une autre exception s'est produite: Traceback (dernier appel le plus récent): Fichier "C: \ PROGRA ~ 1 \ QGIS3 ~ 1.0 \ apps \ Python36 \ lib \ code.py ", ligne 91, dans runcode exec (code, self.locals) Fichier" ", ligne 8, dans TypeError: la capture de classes qui n'héritent pas de BaseException n'est pas autorisée

Est-ce que cela a quelque chose à voir avec PYTHONPATH? Je ne peux même pas voir la liste des algorithmes lors de la frappe: processing.alglist ()

LE_Geomatica
la source

Réponses:

10

Ce n'est pas une réponse à la question d'origine, mais à une question de suivi dans un commentaire ("Aussi comment puis-je voir la liste et les options des algorithmes?").

Dans QGIS 3, les algorithmes de traitement peuvent être répertoriés dans la console QGIS Python (Python 3) à l'aide de (voir https://gis.stackexchange.com/a/274902/22646 et https://gis.stackexchange.com/a/ 274874/22646 ):

QgsApplication.processingRegistry().algorithms()

Pour répertorier les noms (ID):

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

Obtenir de l'aide pour un algorithme (y compris les paramètres d'entrée et de sortie):

processing.algorithmHelp("qgis:union")

Il y a aussi:

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

Mais il ne semble pas inclure d'algorithmes provenant par exemple de gdal et de grass.

Håvard Tveite
la source
La documentation QGIS a maintenant été mise à jour (voir docs.qgis.org/testing/en/docs/user_manual/processing/… ).
Håvard Tveite
14

Dans QGIS 3, utilisez processing.run.

Par exemple:

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

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

Mike
la source
Cela fonctionne parfaitement bien. Comment puis-je voir la liste et les options des algorithmes? J'ai essayé processing.alglist () et processing.list () mais les deux lancent une erreur similaire.
LE_Geomatica