无法解析 QGIS 中的函数

Cannot parse function in QGIS

我有点卡在这里,非常感谢任何帮助。

我有一个 QGIS 图层 (csv),其中包含三列(X、节点、攻丝)。 x是一个值,其他都是字符串。

我想 add/substract 来自 X 的值,基于两列中的字符串(值)。 为此,我创建了一个函数。此函数有两个字典,其中包括 node/tapping 个具有关联值的字符串。

我在 Jupyter notebook 中 运行 这个(通过解析节点的固定变量并点击),它通过定义和 returns 解析正确的值,然后我可以将其添加到X.

我在 QGIS(函数编辑器)中尝试过相同的方法,但是当我在表达式构建器中调用定义时,我得到:函数被调用时参数数量错误。预期为 0 但得到 2,这对我来说似乎很奇怪,因为它被定义为解析两个(在本例中)字符串。

函数

from qgis.core import *
from qgis.gui import *
from qgis.utils import *

@qgsfunction(args='auto', group='Custom')
def dbaddition(val1, val2):
    Node_settings = {"Node1: Amp2-A (11a02)":6,
                    "Node2: Amp1-B (21B01)":5,
                    "Node1: Amp1-B (11b01)":5,
                    "Node2: Amp2-A (21A02)":6,
                    "Node2: Amp3-B (21B03)":10,
                    "Node2: Indoor Loop 23B (21B02)":5,
                    "Node2: Amp3-A (21A03)":9.5,
                    "Node2: Amp1-A (21A01)":7,
                    "Node2: Indoor Loop 20B (21B02)":5,
                    "Node1: Amp1-A (11a01)":0,
                    "Node3: Amp2-B (31B02)":5,
                    "Node3: Amp4-B (31B04)":0,
                    "Node3: Amp1-B (31B01)":0,
                    "Node3: Amp4-A (31A04)":2,
                    "Node1: Amp2-B (11b02)":5,
                    "Node1: Amp3-A (11A03)":0}
    Tapping_settings = {"6W":7.8,
                    "3W":4.8,
                    "1.5W":1.8,
                    "1W":0,
                    "0.6W":-2.2,
                    "0.4W":-4}
    Node_dB = Node_settings.get(val1,0)
    Tap_dB = Tapping_settings.get(val2, 0)
    speaker_change = float(Node_dB) + float(Tap_dB)
    return speaker_change

表达式调用: dbaddition(“节点”,“攻丝”)

解决方案是将定义重新定义为: def dbaddition(val1, val2, feature, parent):