Gerando atributos de maneira automática com o QGIS?


11

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?

Respostas:


8

Se você clicar com o botão direito do mouse na camada e Properties > Fieldsclicar 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:

Editor de Funções

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:

Pré-visualização

Clique em OK , Aplicar etc e agora, esperançosamente, ao criar um recurso, ele criará automaticamente um ID exclusivo no campo escolhido.



3

Eu acho que você não pode definir valores padrão ao criar um novo recurso, mas você pode tentar o seguinte trabalho:

  • Quando terminar de criar seus recursos, vá para a tabela de atributos
  • Vá para a calculadora de campo e crie uma nova coluna chamada idcom o tipo Int
  • Como inserção de valor @row_numberque produzirá valores únicos de acordo com o número da linha
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.