Générer des attributs de manière automatique avec QGIS?

11

Je souhaite générer automatiquement des ID pendant que je crée de nouvelles fonctionnalités. Ainsi, chaque fois que je crée un nouveau point, son ID augmentera de 1 comme suit:

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

Comment puis-je attaquer cela?

Gars
la source

Réponses:

8

Si vous cliquez avec le bouton droit sur votre calque et cliquez sur Properties > Fieldspuis sur Text Edit, vous pouvez définir des valeurs par défaut (soit en tapant une valeur, soit en utilisant une expression) qui apparaîtront automatiquement dans la table attributaire.

Malheureusement, l'utilisation d'une expression comme $rownum(qui devrait vous donner des identifiants uniques pour vos fonctionnalités) ne fonctionne pas (je suppose que la fonctionnalité doit être validée en premier?). Mais nous pouvons créer une fonction qui compte le nombre de fonctionnalités réalisées et en ajoute 1. Vous pouvez accéder à l' éditeur de fonctions comme indiqué dans l'image:

Éditeur de fonction

Ensuite, dans l'éditeur de fonctions, créez un nouveau fichier ou modifiez-en un existant et utilisez le code suivant:

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

Cliquez sur Charger puis accédez à l' onglet Expression à côté et insérez l'expression:

update()

Cliquez ensuite sur OK et vous devriez voir une valeur d'aperçu:

Aperçu

Cliquez sur OK , Appliquer, etc. et maintenant, espérons-le, lorsque vous créerez une fonctionnalité, elle créera automatiquement un identifiant unique dans le champ que vous avez choisi.

Joseph
la source
6

Vous pouvez utiliser le plugin "AutoFields" pour les mises à jour automatiques des attributs lors de la création ou de la modification des entités vectorielles

Daniele Piccolo
la source
3

Je pense que vous ne pouvez pas définir de valeurs par défaut lors de la création d'une nouvelle fonctionnalité, mais vous pouvez essayer le travail suivant:

  • une fois la création de vos fonctionnalités terminée, accédez au tableau des attributs
  • Accédez à la calculatrice de champ et créez une nouvelle colonne appelée idavec le type Int
  • Comme insert de valeur @row_numberqui produira des valeurs uniques selon le numéro de ligne
Rire
la source