Quero gerar IDs automaticamente enquanto crio novos recursos. Portanto, toda vez que eu criar um novo ponto, seu ID aumentará em 1 como o seguinte:
Feature 1: id 1
Feature 2: id 2
Feature 3: id 3
Como posso atacar isso?
Quero gerar IDs automaticamente enquanto crio novos recursos. Portanto, toda vez que eu criar um novo ponto, seu ID aumentará em 1 como o seguinte:
Feature 1: id 1
Feature 2: id 2
Feature 3: id 3
Como posso atacar isso?
Se você clicar com o botão direito do mouse na camada e Properties > Fields
clicar em Text Edit
, você poderá definir os valores padrão (digitando um valor ou usando uma expressão) que aparecerão na tabela de atributos automaticamente.
Infelizmente, o uso de uma expressão como $rownum
(que deve fornecer IDs exclusivos para seus recursos) não funciona (meu palpite é porque o recurso precisa ser confirmado primeiro?). Mas podemos criar uma função que conta o número de recursos criados e adiciona 1. Você pode acessar o Editor de Funções, como mostrado na imagem:
Em seguida, no Editor de funções, crie um novo arquivo ou edite um existente e use o seguinte 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
Clique em Carregar , vá para a guia Expressão ao lado e insira a expressão:
update()
Em seguida, clique em OK e você verá um valor de visualização:
Clique em OK , Aplicar etc e agora, esperançosamente, ao criar um recurso, ele criará automaticamente um ID exclusivo no campo escolhido.
Você pode usar o plug-in "Campos automáticos " para atualizações automáticas de atributos ao criar ou modificar recursos vetoriais
Eu acho que você não pode definir valores padrão ao criar um novo recurso, mas você pode tentar o seguinte trabalho:
id
com o tipo Int@row_number
que produzirá valores únicos de acordo com o número da linha