QgsProcessingUtils.mapLayerFromString中的第二个参数是什么?

问题描述

我目前正在尝试选择一个图层。在Qgis 2中,这是通过

完成的
from qgis import processing
lyrConsumer = processing.getobject('contours-iris-2014')

但是现在,文档说我必须在Qgis3中使用QgsProcessingUtils.mapLayerFromString()。显然,由于出现此错误,我现在需要再加上一个参数。

Traceback (most recent call last):
  File "C:\OSGEO4~1\apps\python37\lib\code.py",line 90,in runcode
    exec(code,self.locals)
  File "<input>",line 1,in <module>
TypeError: QgsProcessingUtils.mapLayerFromString(): not enough arguments

第二个参数是什么?

解决方法

第二个参数是 QgsProcessingContext(),它让算法知道它将运行的上下文是什么。

你可以这样设置:

context = QgsProcessingContext()
context.setProject(QgsProject.instance())
QgsProcessingUtils.mapLayerFromString('my_layer',context)

但是,既然您说要尝试选择图层,那么如果您尝试从 QGIS 图层树中获取图层,则可以查看 Getting layer by name in PyQGIS?

,

访问QGIS API Documentation,您将找到答案。