X

Identifiant unique auto-incrémenté dans QGIS

La création d’un identifiant unique affecté aux entités d’un vecteur garantit l’indexation de chaque objet géographique. L’attribution d’une numérotation distincte assure le classement des entités vectorielles. Ce tutoriel SIG montre comment ajouter un identifiant unique auto-incrémenté dans QGIS. Par définition, l’incrémentation automatique est l’ajout d’une valeur fixée à une variable. La création d’une séquence de valeurs auto-incrémentées dans un champ attributaire d’un vecteur peut intervenir :

  1. Dès la création de la première entité vectorielle;
  2. Pour l’indexation d’objets géographiques existants.

Cette deuxième possibilité d’indexation est la plus simple. Ensuite, on verra comment ajouter une numérotation automatique de l’identifiant lorsqu’on dessine une nouvelle entité géographique.

I. Création d’une couche temporaire dans QGIS

Ce tutoriel SIG est illustré par une couche temporaire définie par une géométrie de type polygone. Comment créer une couche temporaire en mémoire dans QGIS?

I.1. Création d’une couche SIG de type Multi-Polygone

Dans la barre des menus (figure 1), on sélectionne :

Couche > Créer une couche > Nouvelle couche temporaire en mémoire...
Figure 1 : Création d’une couche temporaire dans QGIS.

Dans la nouvelle fenêtre (figure 2), on choisit :

  • Le nom de la couche;
  • Le type de géométrie : ici, on créé une couche de type multi-Polygone;
  • La projection géographique;
  • Les champs attributaires : on ajoute le champ « id » de type entier qui servira d’identifiant unique.
Figure 2 : Structure de la couche temporaire QGIS.

La validation génère la création de la couche SIG dans le panneau des couches. A ce stade, le vecteur ne comporte aucune entité géographique. La table attributaire de la couche appelée « couche_polygone » est donc vide.

I.2. Ajout d’objets géographiques au vecteur dans QGIS

Il existe plusieurs solutions pour ajouter des objets géographiques au vecteur dans QGIS:

  1. On dessine des polygones sur le canevas de la carte;
  2. Par la copie d’entités géographiques d’un autre vecteur avec un type de géométrie similaire au vecteur cible.

I.2.1. Mode édition du vecteur

Ces deux solutions nécessitent de rendre éditable le vecteur. Pour cela, on sélectionne la couche dans le panneau des couches. La couche surlignée en bleu devient la couche active. Et, l’icône représentant un crayon permet de passer en mode édition sur la couche. Ou, on clique droit sur la couche, puis on sélectionne Toggle Editing (figure 3).

Figure 3 : Édition d’un vecteur dans QGIS.

I.2.2. Dessin de polygones

Pour dessiner des polygones, il suffit de cliquer dans la barre des outils de QGIS sur l’icône Ajouter une entité polygonale. Ou, dans la barre des menus, on sélectionne : Éditer > Ajouter une entité polygonale. Désormais, le dessin des polygones est possible sur le canevas de la carte. Chaque clic gauche génère un sommet du polygone puis le clic droit ferme la forme. Lors de la fermeture du polygone, une fenêtre s’ouvre pour renseigner le champ attributaire « id ». Ici, on ne saisit rien et on appuie sur « OK » pour ajouter l’entité dessinée au vecteur. Pour l’exemple, on dessine une dizaine de polygones. Comme le montre la figure 4 ci-dessous, les identifiants de la table attributaire sont nuls.

Figure 4 : Dessin de polygones dans QGIS.

I.2.3. Copie de polygones d’un vecteur

Il est également possible d’ajouter des polygones dans un vecteur en copiant les polygones d’un autre vecteur. La liste des étapes pour copier-coller des entités géographiques d’un vecteur dans QGIS sont décrites ci-après :

  1. Après avoir ajouté le vecteur pour lequel on veut copier des entités, on sélectionne les objets à copier. La sélection se fait soit depuis la table attributaire du vecteur ou soit depuis le canevas de la carte. Dans l’exemple, plusieurs communes du vecteur « COMMUNE » sont prises en charge. On note que cette couche n’a pas besoin d’être en mode édition.
  2. Puis, Ctrl+c;
  3. On sélectionne la couche cible ÉDITABLE dans le panneau des couches et Ctrl+v. La figure 5 présente la copie de 22 entités de la couche « COMMUNE » vers la couche « couche_polygone ».

Quelques remarques sur la copie d’entités géographiques dans QGIS :

  • Seules les géométries sont copiées d’un vecteur à l’autre s’il n’existe aucun champ attributaire commun aux deux vecteurs;
  • La copie des valeurs attributaires se réalisent pour les champs communs de même type (texte, numérique, etc).
Figure 5 : Copier-Coller des entités d’un vecteur dans une autre couche SIG dans QGIS.

Enfin, on enregistre l’ajout des objets géographiques en cliquant sur l’icône représentant la disquette avec le crayon. Toutefois, on laisse la couche SIG en mode édition pour la suite du tutoriel.

Les deux sections suivantes montre la génération d’id automatique dans QGIS.

II. Identifiant unique auto-incrémenté pour des entités vectorielles existantes

Dans un premier temps, la numérotation automatique se réalise sur les entités précédemment créées. L’outil de la calculatrice des champs permet de générer un identifiant unique auto-incrémenté dans la table attributaire d’un vecteur dans QGIS. Dans la fenêtre de calculatrice de champ (figure 6) :

  1. On coche « Mise à jour d’un champ existant »;
  2. Dans la liste déroulante, on choisit le champ « id »;
  3. Pour l’expression, la fonction @row_number génère automatiquement des valeurs uniques et incrémentielles.
  4. Cliquez sur « OK » pour appliquer les modifications.
Figure 6 : Fonction pour générer un identifiant unique auto-incrémenté dans QGIS.

La couche vecteur possède des valeurs auto-incrémentées dans le champ attributaire « id ». Ces valeurs sont basées sur l’ordre des lignes dans la table attributaire.

III. Ajouter automatiquement un identifiant unique auto-incrémenté dans QGIS

Pour éviter de réaliser la manipulation précédente lors de la création de nouvelles entités polygonales, on formate l’ajout automatique d’un identifiant unique auto-incrémenté dans QGIS. Pour cela, on utilise le formulaire d’attribut lié au vecteur. Dans les propriétés de la couche, on sélectionne l’onglet Formulaire d'attributs. Littéralement, on souhaite la génération automatique d’une valeur par défaut dans le champ « id ». Dans la nouvelle fenêtre (figure 7):

  • La génération automatique s’affiche par défaut;
  • On sélectionne le champ à formater, ici le champ « id »;
  • Puis dans la rubrique « Défauts » en bas à droite de la fenêtre, on applique une expression afin d’afficher une valeur par défaut.
  • Enfin, on coche « Appliquer la valeur par défaut sur la mise à jour ».
Figure 7 : Formulaire d’attributs pour l’identifiant unique.

Il existe plusieurs possibilités d’expressions pour générer l’identifiant unique auto-incrémentée pour chaque mise à jour du vecteur dans QGIS.

III.1. Expressions de numérotation automatique d’un identifiant avec des données existantes

Les premières expressions possibles sont affectées à un vecteur contenant déjà des entités géographiques. Si on reprend la couche temporaire « couche_polygone », plusieurs polygones ont été dessinés et copier/coller depuis un autre vecteur.

Alors, à chaque ajout d’un polygone, on souhaite que la valeur de l' »id » de la nouvelle entité prenne la valeur maximale de l’ « id » de l’entité précédente à laquelle on ajoute 1. En clair, on incrémente la variable « id » avec un pas de 1. Il ne faut pas oublier que l’expression doit prendre en compte à la fois l’ajout d’une entité géographique mais également sa modification.

Donc, si la valeur de l’ « id » du polygone dessiné est nulle alors on lui affecte la valeur maximale du champ sommée de 1. Au contraire, la valeur de l’ « id » courant est gardée. Ce qui se traduit par l’expression dans la valeur par défaut du formulaire d’attributs (figure 8) par :

IF("id" is NULL,maximum("id") + 1, "id")
Figure 8 : Expression de numérotation automatique de l’identifiant dans QGIS.

Cette condition peut également s’écrire :

CASE 
WHEN "id" is NULL THEN maximum("id")+1
ELSE "id"
END

Après validation du formulaire d’attributs, on ajoute une nouvelle entité polygonale au vecteur dans QGIS. Son identifiant « id » est unique et il est auto-incrémenté de 1 comme illustré sur la figure 9 ci-après.

Figure 9 : Ajout automatique d’un identifiant unique auto-incrémenté dans QGIS.

III.2. Expression de génération d’identifiant unique auto-incrémenté dans QGIS

Toutefois, si on supprime l’ensemble des objets du vecteur ou pour la création d’un nouveau vecteur, ces expressions ne fonctionnent pas. En effet, il n’existe aucune valeur d’ « id » donc logiquement, le maximum("id") ne renvoie pas de valeur. Pour pallier à ce problème, on ajoute la condition WHEN maximum("id") is NULL THEN 0 , si on souhaite que la première valeur soit égale à 0.

L’expression finale de numérotation automatique d’un identifiant unique dans QGIS s’écrit (figure 10) :

CASE 
WHEN maximum("id") is NULL THEN 0
WHEN "id" is NULL THEN maximum("id")+1
ELSE "id"
END
Figure 10 : Expression de génération automatique d’un identifiant unique dans QGIS.

Si on ajoute la première entité vectorielle, la valeur de l’identifiant unique commence bien à 0 (figure 11). Puis la valeur de l’ « id » de la seconde entité dessinée est bien auto-incrémentée de 1. Et ainsi de suite…

Figure 11 : Incrémentation automatique de l’id pour la première entité dessinée dans QGIS.

Pour aller plus loin, quelle est la valeur du champ « id » lors de la fusion de plusieurs entités vectorielles. Tout d’abord, comment fusionner les entités sur QGIS ? Voici les étapes de fusion des objets du vecteur :

  1. En mode édition, on sélectionne les entités à fusionner;
  2. Puis, dans la barre des menus, on sélectionne : Éditer > Éditer les géométries > Fusionner les entités sélectionnées;
  3. Dans la nouvelle fenêtre ouverte, on choisit les attributs à sauvegarder pour la nouvelle entité fusionnée (figure 12). Dans notre cas ici, on choisit une valeur d’un « id » existant pour la fusion. La valeur de l’identifiant « id » n’est pas auto-incrémentée. Elle correspond bien à la valeur sélectionnée lors de la fusion des entités dans QGIS.
Figure 12 : Fusion des entités sélectionnées dans QGIS.

En conclusion, numéroter des entités dans QGIS est relativement simple. On s’appuie sur la calculatrice de champ pour un vecteur possédant des objets géographiques. Lors de l’ajout d’une entité, l’incrémentation automatique d’un identifiant unique s’appuie sur une expression par défaut du formulaire d’attributs de la couche SIG.

Florian Delahaye: Passionné de Géomatique

View Comments (1)

  • Bonjour, j'ai justement un problème avec cet identifiant unique (fid) que je ne n'arrive pas à modifier ou supprimer dans un fichier de points Geopackage.
    J'ai le message : "Impossible de supprimer la colonne d'identifiant des entités" au moment de l'enregistrement.
    Même chose pour toute modification.

Related Post