使用QGIS自动生成属性吗?


11

我想在创建新功能时自动生成ID。因此,每次创建新点时,其ID都会增加1,如下所示:

Feature 1: id 1
Feature 2: id 2
Feature 3: id 3

我该如何攻击?

Answers:


8

如果右键单击图层,Properties > Fields然后转到,则Text Edit可以设置默认值(通过输入值或使用表达式),该默认值将自动出现在属性表中。

不幸的是,使用类似这样的表达式$rownum(应该为您的功能获得唯一的ID)不起作用(我猜是因为必须首先提交功能?)。但是,我们可以创建一个功能,该功能计算所创建功能的数量并添加1。您可以访问功能编辑器,如图所示:

功能编辑器

然后在函数编辑器中,创建一个新文件或编辑现有文件,并使用以下代码:

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

@qgsfunction(args='auto', group='Custom')
def update(feature, parent):
    layer = qgis.utils.iface.activeLayer()
    x = layer.featureCount()
    return x + 1

单击加载,然后转到其旁边的表达式选项卡并插入表达式:

update()

然后单击确定,您应该看到一个预览值:

预习

单击“ 确定”,“ 应用”等,现在希望在创建功能时,它将在您选择的字段中自动创建唯一的ID。



3

我认为创建新功能时不能设置默认值,但是可以尝试以下解决方法:

  • 完成创建特征后,转到属性表
  • 转到字段计算器并创建一个名为idInt类型的新列
  • 作为值插入 @row_number,将根据行号生成唯一的值
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.