【问题标题】:Cannot parse function in QGIS无法解析 QGIS 中的函数
【发布时间】: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("节点", "点击")

【问题讨论】:

    标签: python qgis


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2012-07-25
      • 2013-09-20
      • 2012-11-27
      • 1970-01-01
      • 2015-05-29
      • 1970-01-01
      • 2021-04-04
      • 2018-07-05
      • 2017-10-12
      相关资源
      最近更新 更多