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?
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?
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:
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:
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.
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
Puede utilizar el plugin "AutoFields" para la actualización automática de atributos al crear o modificar características vectoriales
Creo que no se pueden establecer valores por defecto cuando se crea una nueva característica, pero podría intentar la siguiente solución:
id
con el tipo Int@row_number
que producirá valores únicos según el número de fila 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.