¿Generando atributos de forma automática con QGIS?

11

Quiero generar ID automáticamente mientras creo nuevas funciones. Por lo tanto, cada vez que creo un nuevo punto, su ID aumentará en 1 de la siguiente manera:

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

¿Cómo puedo atacar esto?

Chico
fuente

Respuestas:

8

Si hace clic con el botón derecho en su capa y Properties > Fieldsluego hace clic en Text Edit, puede establecer los valores predeterminados (ya sea escribiendo un valor o usando una expresión) que aparecerán en la tabla de atributos automáticamente.

Desafortunadamente, el uso de una expresión como $rownum(que debería obtener identificadores únicos para sus características) no funciona (supongo que es porque la característica debe confirmarse primero.). Pero podemos crear una función que cuente la cantidad de características realizadas y agregue 1. Puede acceder al Editor de funciones como se muestra en la imagen:

Editor de funciones

Luego, en el Editor de funciones, cree un nuevo archivo o edite uno existente y use el siguiente código:

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

Haga clic en Cargar, luego vaya a la pestaña Expresión al lado e inserte la expresión:

update()

Luego haga clic en Aceptar y debería ver un valor de vista previa:

Avance

Haga clic en Aceptar , Aplicar , etc. y ahora, con suerte, cuando cree una función, creará automáticamente una identificación única en el campo elegido.

Joseph
fuente
3

Creo que no puede establecer valores predeterminados al crear una nueva función, pero podría intentar lo siguiente:

  • cuando termine de crear sus funciones, vaya a la tabla de atributos
  • Vaya a la calculadora de campo y cree una nueva columna llamada idcon tipo Int
  • Como inserción de valor @row_numberque producirá valores únicos de acuerdo con el número de fila
LaughU
fuente