banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 16 March 2022 17:33

Robin.k
Participant occasionnel
Date d'inscription: 15 Mar 2022
Messages: 45

QGIS/ID: incrementation automatique qui redemarre a chaque INSEE

Bonjour à tous,

Dans le cadre de mes fonctions, je suis amené à créer un identifiant unique pour chaque objet par commune. J'ai créé une expression qui permet d'obtenir automatiquement un identifiant en fonction de l'INSEE avec un code à 5 digit :

'S-' || array_to_string(overlay_within('communes',insee ))||'-'
||
Case
When $id >= '0' and $id < '10' then '0000'|| $id
When $id >= '10' and $id < '100' then '000'|| $id
When $id >= '100' and $id < '1000' then '00'|| $id
When $id >= '1000' and $id < '10000' then '0'|| $id
Else $id
end

Malheureusement, l'incrémentation se fait sur tous les objets soit, S-51000-1, S-52000-2. Or je souhaiterais que l'incrémentation recommence lors d'un INSEE différent pour obtenir :  S-51000-1, S-52000-1, S-52000-2, S-52000-3,S-50000-1 par exemple.

Est-ce que vous savez comment intégrer le fait que l'incrémentation doit recommencer en fonction d'un autre champ ? (ici  l'insee).

Merci d'avance smile

Hors ligne

 

#2 Thu 17 March 2022 08:54

SANTANNA
Moderateur
Lieu: Angers
Date d'inscription: 18 Jan 2008
Messages: 3939

Re: QGIS/ID: incrementation automatique qui redemarre a chaque INSEE

Bonjour,

Code:

Case
When $id >= '0' and $id < '10' then '0000'|| $id
When $id >= '10' and $id < '100' then '000'|| $id
When $id >= '100' and $id < '1000' then '00'|| $id
When $id >= '1000' and $id < '10000' then '0'|| $id
Else $id
end

J'imagine que vous tablez sur des valeurs à 5 chiffres max. Cette expression peut être remplacée/simplifiée avec la fonction lpad.
Pour l'incrémentation, je pense qu'un maximum ou peut-etre mieux un count +1 sur votre champ avec un filtre sur la commune (spatial ou attributaire, ça dépend de vos champs disponibles) devrait faire l'affaire. Puis concaténez.

PS: $id est une valeur d'identification incrémentée propre à QGIS. Vous ne pouvez en contrôler la valeur, à la création. Je ne suis pas sûr que ça ait quelque chose (de bien) à faire dans ce contexte.

Hors ligne

 

#3 Thu 17 March 2022 12:03

Robin.k
Participant occasionnel
Date d'inscription: 15 Mar 2022
Messages: 45

Re: QGIS/ID: incrementation automatique qui redemarre a chaque INSEE

Bonjour,

Merci pour votre réponse !!! Effectivement c'est bien plus simple avec lpad et count va résoudre mon problème.


Pour ceux qui pourraient en avoir besoin, j'ai utilisé un champ avec numérotation automatique :

lpad(count("insee_noeud","insee_noeud")+1,'5','0')+1 #compte le nombre d'entités par code insee et ajoute 1.

Le champ de l'identifiant qui fait appel au précédent champ (Numero)

'S-' || "insee" ||'-'|| "NUMERO"

Bon ça ne marche que pour les nouvelles entités créées mais c'était le principal enjeu comme les entités présentes, il suffit de filtrer et d'utiliser Row_NUM.

Merci beaucoup ! J'ai cherché très compliqué alors que c'est tellement simple avec count !

Hors ligne

 

Pied de page des forums

Powered by FluxBB