Remplir la colonne avec des numéros consécutifs dans QGIS?

30

Je crée une nouvelle colonne dans ma table d'attributs et elle a une valeur par défaut (par exemple 0). Je veux (probablement en utilisant la calculatrice de champ) que la ligne 1 ait la valeur 1, la ligne 2 = 2 et ainsi de suite, tout comme un index numéroté.

Je serais reconnaissant pour un exemple de code pour la calculatrice de terrain (y compris l'utilisation de $rownum(je pense que j'en ai besoin pour passer à la ligne)).

Shepherdjo
la source

Réponses:

54

Mettez simplement $rownum(QGIS 2) ou @row_number(QGIS 3+) comme expression. Aussi simple que cela. :)

Une liste à jour de toutes les fonctions de la calculatrice de terrain peut être lue dans les documents officiels .

lynxlynxlynx
la source
J'ai suivi votre approche, mais sans raison apparente, les chiffres changent à un moment donné. Cela a parfaitement fonctionné de la ligne 1 à la ligne 129, et après être passé à 789 ... existe-t-il un moyen de résoudre ce problème?
Guillaume
1
Assurez-vous que vous n'avez pas de filtre d'affichage actif, car il n'y a aucune raison pour qu'il saute.
lynxlynxlynx
8

@ArMoraer a développé un plugin intéressant pour pouvoir contrôler la façon dont cette numérotation automatique est faite, il s'appelle "Trier et numéroter " . Vous pouvez l'utiliser pour remplir une colonne avec des numéros uniques en prenant en compte 3 autres champs pour trier vos données comme vous le souhaitez avant la numérotation.

Voir la rubrique source: Existe - t-il un moyen d'attribuer un numéro de ligne pour le tableau trié par colonne dans QGIS?

gisnside
la source
7

Si vous utilisez QGIS 3, vous devez utiliser @row_number

entrez la description de l'image ici

Leo Cardona
la source
1

Pour moi, le moyen le plus simple et le plus simple est juste $id, cela retournera un idnombre à chaque ligne en l'indexant 0.

Vlad
la source
Il renvoie chaque ID d'entité, mais la séquence ne démarre pas nécessairement à 0 et peut avoir des valeurs manquantes. C'est le cas après avoir supprimé une entité existante (c.-à-d. Commencer par une couche ayant 3 entités, supprimer # 2, l'appel à $ id renverra 0 et 2.)
JGH
Vous avez raison, s'il manque des valeurs, alors il y aura un problème avec le vrai numéro d'indexation. Cependant, je suppose que l'appel de la $id, après la suppression des lignes devrait corroborer @row_number. Si j'ai bien compris votre affirmation.
Vlad
non, cela laissera des trous
HGJ