processing.runalg()引发“ TypeError:不允许捕获未继承自BaseException的类”


11

大家好,我是PyQGIS的新手,我一直在尝试在QGIS 3.0中运行脚本而没有成功(它在2.18中完美运行),并且总是遇到相同的错误:

AttributeError:模块“处理”没有属性“ runalg”在处理上述异常期间,发生了另一个异常:追溯(最近一次调用为最后一次):文件“ C:\ PROGRA〜1 \ QGIS3〜1.0 \ apps \ Python36 \ lib \ Runcode exec(code,self.locals)文件中的code.py“,行91,TypeError中的行8,”:捕获不继承自BaseException的类是不允许的

这与PYTHONPATH有关吗?输入时,我什至看不到算法列表:processing.alglist()

Answers:


10

这不是对原始问题的解答,而是对注释中的后续问题的解答(“还如何看到算法的列表和选项?”)。

在QGIS 3中,可以使用(请参阅https://gis.stackexchange.com/a/274902/22646https://gis.stackexchange.com/a/在QGIS Python控制台(Python 3)中列出处理算法。274874/22646):

QgsApplication.processingRegistry().algorithms()

列出名称(ID):

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

获取算法帮助(包括输入参数和输出):

processing.algorithmHelp("qgis:union")

还有:

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

但这似乎不包括来自gdal和grass的算法。



14

在QGIS 3中,使用processing.run

例如:

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

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


它工作得很好。另外,如何查看算法列表和选项?我尝试过processing.alglist()和processing.list(),但是都抛出类似的错误。
LE_Geomatica
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.