12 votos

¿Generar atributos de forma automática con QGIS?

Quiero autogenerar IDs mientras creo nuevas características. Así que cada vez que cree un nuevo punto, su ID se incrementará en 1 como el siguiente:

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

¿Cómo puedo atacar esto?

7voto

Mue Puntos 2469

Si usted Haga clic con el botón derecho del ratón en su capa y vaya a Properties > Fields y luego haga clic en el botón Text Edit puede establecer Valores por defecto (escribiendo un valor o utilizando una expresión) que aparecerá en la tabla de atributos automáticamente.

Por desgracia, 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 tiene que ser comprometida primero). Pero podemos crear una función que cuente el número de características realizadas y añada 1. Puedes acceder a la función Editor de funciones como se muestra en la imagen:

Function Editor

A continuación, en el Editor de funciones, cree un nuevo archivo o edite uno existente y utilice 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 Carga luego ir a la Expresión al lado e inserte la expresión:

update()

A continuación, haga clic en OK y debería ver un valor de vista previa:

Preview

Haga clic en OK , Aplique etc. y ahora, con suerte, al crear una característica, se creará automáticamente un identificador único en el campo elegido.

0 votos

Creo que el featurecount no es muy fiable para obtener valores únicos. Digamos que tienes actualmente 20 características y la función update() devuelve el valor 21. Después de eso elimino otra característica en la capa y creo una nueva... esta nueva característica también obtendrá el valor 21. Prefiero calcular el valor máximo de la columna y añadir +1

6voto

Daniele Piccolo Puntos 108

Puede utilizar el plugin "AutoFields" para la actualización automática de atributos al crear o modificar características vectoriales

3voto

bretddog Puntos 210

Creo que no se pueden establecer valores por defecto cuando se crea una nueva característica, pero podría intentar la siguiente solución:

  • cuando termine de crear sus características vaya a la tabla de atributos
  • Ve a la calculadora de campos y crea una nueva columna llamada id con el tipo Int
  • Como valor de inserción @row_number que producirá valores únicos según el número de fila

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X