Pages: 1
- Sujet précédent - QGIS/ID: incrementation automatique qui redemarre a chaque INSEE - Sujet suivant
#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
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
Pages: 1
- Sujet précédent - QGIS/ID: incrementation automatique qui redemarre a chaque INSEE - Sujet suivant