【发布时间】:2020-11-12 14:08:32
【问题描述】:
我有点卡在这里,所以任何帮助表示感谢。
我有一个 QGIS 层 (csv),其中包含三列(X、Node、Tapping)。 x 是一个值,其他是字符串。
我想根据两列中的字符串(值)从 X 中添加/减去值。 为此,我创建了一个函数。该函数有两个字典,其中包括具有关联值的节点/点击字符串。
我在 Jupyter 笔记本中运行了它(通过解析节点的固定变量并点击),它解析定义并返回正确的值,然后我可以将其添加到 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("节点", "点击")
【问题讨论】: