保存QGIS字段计算器中使用的方程式吗?


10

我正在尝试计算新计算点的某些值。因此,我使用字段计算器编写方程式来确定值。

有什么方法可以保存该等式,以便在我开始一项新工作时,不必重新输入它?

类似于为点保存样式和符号系统的方式。


这是一个很好的功能要求,添加起来很容易。
内森·W

Answers:


5

QGIS将字段计算器中使用的最后一个方程式保存在“最近”选项卡下,您可以通过双击来重新使用它

字段计算的img


如果OP稍后不使用其他公式,那是正确的。但是,当OP使用新方程式时,它将随着时间消失。该Recent容器仅仅是暂时的。
ahmadhanb

5

您可以在新函数中编写方程式,然后只需调用该函数即可重新应用计算。

打开字段计算器,单击Function Editor选项卡,new file然后编辑功能。选择load。请注意,ok此刻将不可用。

返回Expression选项卡,选择custom功能组并双击您的功能。选择要更新的字段,然后点击ok


如果只想使用字段值和常量,则可以编辑以开头的默认函数签名value1。在我的示例中,我已将其删除,但是您可以使用此字段传递新的参数。

然后,您可以使用feature["fieldName"].... 访问要素字段值。请小心,在包含所述字段的图层上调用此函数!

@qgsfunction(args='auto', group='Custom')
def funcTestCalc( feature, parent):
    return feature["fieldA"]+feature["fieldB"];

在此处输入图片说明 在此处输入图片说明


3

除了@LaughU提供的解决方案之外,您还可以将任何字段计算器操作合并到图形模型中,然后保存并运行该模型。这但这要求您的列名称必须始终相同。


2

如果要向现有图层添加新点,并且要对该点运行与所有其他点相同的计算,则有两个有用的功能:

虚拟领域

虚拟字段会自动为每个新属性计算一个表达式。它也会定期更新。因此,例如,对于称为“纬度”的虚拟字段,您可以使用表达式$y

虚拟字段的优点和缺点:

  • 每当您添加新点时,它将自动将表达式的输出添加到此字段。
  • 表达式输出发生变化时自动更新。因此,如果在示例中移动该点,则“纬度”值将自动更改。
  • 您无法编辑虚拟字段值。
  • 虚拟字段被保存为QGIS项目文件的一部分,而不是shapefile的一部分(或图层所使用的任何格式)。因此,如果您在其他项目中打开该图层,则该图层将没有其虚拟字段。

具有默认字段值的常规字段

您可以将字段设置为具有基于表达式的默认值。创建新点时,其属性将自动填充为默认值。您可以更改属性值。它不会自动更新。*

默认字段值的优缺点:

  • 每当您添加新点时,它将自动将表达式的输出添加到此字段。
  • 不会自动更新。在此示例中,这意味着如果移动现有点,则其“纬度”值将不会更新。
  • 您可以更改此字段的值。
  • 保存为shapefile的一部分。因此,如果您在其他项目中打开该图层,它将在其属性表中包含此字段。

*在QGIS 3.2中,默认字段值可以(可选)设置为“更新时应用默认值”。使用此选项,如果将默认值是$y当前值的点移动到新的y坐标上。


我认为可以在QGIS 3.2中将默认字段值设置为自动更新。
she_weeds 18/09/26

@she_weeds谢谢你指出这一点。我将更新答案以包含该信息。
csk
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.