#1 Sat 17 February 2018 11:38
- Fom willy
- Juste Inscrit !
- Date d'inscription: 20 Sep 2017
- Messages: 5
QGIS: Incrementation ?
Bonjour☺.
Voilà, je travaille dans qgis et pour un shp donné j'ai un champs (CODE_Route) que j'aimerais remplir automatiquement avec des codes de ce genre (c0001; c0002; c0003...etc ).jusqu'a 5000 entités, c'est très fastidieux manuellement.😓
Svp existe t'il une extension pour cette incrémentation? Ou alors un code python ?
Merci d'avance.
Hors ligne
#2 Sat 17 February 2018 14:47
Re: QGIS: Incrementation ?
Bonjour,
Aller dans la calculette de champs de QGIS puis utilisez les fonctions @row_number et lpad
J'ai fait un GIF qui illustre comment faire via ce lien http://labs.webgeodatavore.com/partage/ … r_lpad.gif
Cordialement
Thomas
Hors ligne
#3 Sat 17 February 2018 15:20
- Fom willy
- Juste Inscrit !
- Date d'inscription: 20 Sep 2017
- Messages: 5
Re: QGIS: Incrementation ?
Merci énormément Thomas. Vous avez résolu avec une precision remarquable mon problème. Merci une fois de plus.
Hors ligne
#4 Sat 17 February 2018 20:49
- Quentin_gis
- Juste Inscrit !
- Date d'inscription: 26 May 2014
- Messages: 7
Re: QGIS: Incrementation ?
Flute, pour une fois que je pouvais répondre à une question, je me fais prendre de vitesse
Hors ligne
#5 Sun 18 February 2018 07:38
- Fom willy
- Juste Inscrit !
- Date d'inscription: 20 Sep 2017
- Messages: 5
Re: QGIS: Incrementation ?
😂😂😂 t'inquiète Quentin_gis, ton tour viendra.
Hors ligne
#6 Tue 17 September 2019 14:27
- jpjp74
- Participant assidu
- Date d'inscription: 21 Oct 2011
- Messages: 159
Re: QGIS: Incrementation ?
Bonjour,
Merci Thomas pour cette réponse qui correspond à mon besoin, au moins au départ.
Je rentre cette expression
lpad( @row_number ,3,'0') et j'obtiens bien 001, 002, 003, ...
Mais je voudrais démarrer la numérotation à 2. Je tape donc
lpad( @row_number ,3,'2') mais j'obtiens 210, 211, 212 ... Donc '0' ne doit pas être le point de départ ?
Je cherche depuis un moment. Comment dire à QGIS que je veux commencer à 10 par exemple ?, pour avoir 010, 011, 012, ... ou à 100 ?
Merci d'avance, bonne journée
Win 10 et QGIS 328
Hors ligne
#7 Tue 17 September 2019 14:39
- Pascal Boulerie
- Participant assidu
- Lieu: France
- Date d'inscription: 12 Sep 2005
- Messages: 2947
- Site web
Re: QGIS: Incrementation ?
il faut se référer à la documentation de cette fonction lpad pour comprendre ce qu'elle donne en sortie, et ce qu'elle fait avec son troisième argument... Et que ce n'est pas cette fonction lpad qu'il faut utiliser pour changer la borne de départ du compteur identifiant...
lpad en SQL :
https://sql.sh/fonctions/lpad
PS Pour se souvenir à quoi cette fonction lpad ou LPAD ou LPad sert, il s'agit de left padding :
https://database.guide/left-padding-in- … uivalents/
Il existe aussi rpad : right padding .
Ce sont deux fonctions de remplissage d'une chaîne de texte.
https://fr.wiktionary.org/wiki/padding
rembourrage
Dernière modification par Pascal Boulerie (Wed 18 September 2019 10:17)
« L'État est désormais quasi déliquescent. » (José Cohen-Aknine, ingénieur X-Ponts, IGPEF, dans Déliquescence et renaissance de l'État.)
Hors ligne
#8 Tue 17 September 2019 15:10
- BOUGUEN
- Participant occasionnel
- Lieu: Guignen
- Date d'inscription: 9 Mar 2008
- Messages: 43
Re: QGIS: Incrementation ?
Bonjour,
La fonction lpad vous permet de gérer du texte, il est tout à fait normal que QGis vous renvoie 210 selon votre expression.
Par exemple pour partir de 10 il vous faut faire une addition avec le @row_number
lpad( @row_number+10 ,3,0) cette expression vous renverra '011'
Cordialement,
Gaël
Hors ligne
#9 Tue 17 September 2019 16:33
- jpjp74
- Participant assidu
- Date d'inscription: 21 Oct 2011
- Messages: 159
Re: QGIS: Incrementation ?
Merci à vous deux,
Je comprends mieux. Et j'arrive à un résultat.
Du coup je m'aperçois que @row_number n'est pas du tout la bonne expression, comme elle numérote les entités dans l'ordre où elles ont été créées.
Grâce à votre piste, j'obtiens bien ce que je veux, en passant par un champ de numérotation intermédiaire (NUMTEMP) et je met NUMTEMP" au lieu de "@row_number" dans l'expression.
Il est plus facile de renseigner manuellement ce champ intermédiaire (1, 2, 3, 4, etc) au lieu de 238, 239, 240, ...
Mais la cerise sur le gâteau serait de tout automatiser de suite. Est-il possible :
- après avoir sélectionné un certain nombre de lignes non contigües (qui ne suivent pas / n'ont pas été créées les unes à la suite des autres)
- les avoir classées dans l'ordre qui me convient
que la numérotation incrémentée se fasse en suivant l'ordre de classement des lignes sélectionnées ?
Je ne sais si si ma question est très explicite. Je joins une capture d'écran.
Dans ma capture d'écran, je cherche à avoir une suite incrémentée automatiquement dans X_NUM dans l'ordre d'affichage des lignes et en pouvant définir le numéro de départ (ici 10)
Merci d'avance
Win 10 et QGIS 328
Hors ligne
#10 Mon 23 September 2019 11:51
- jpjp74
- Participant assidu
- Date d'inscription: 21 Oct 2011
- Messages: 159
Re: QGIS: Incrementation ?
Bonjour,
Je me permets de "remonter" la question ci dessus.
Est-il possible de créer une numérotation incrémentée automatiquement, à partir d'une sélection de lignes et de leur "classement les unes au dessous des autres. Un peu comme on le fait avec un tableur ?
Merci d'avance, bonne journée
Win 10 et QGIS 328
Hors ligne
#11 Thu 05 October 2023 14:53
- sapeur04
- Participant occasionnel
- Date d'inscription: 11 Dec 2007
- Messages: 11
Re: QGIS: Incrementation ?
Bonjour,
Merci Thomas pour cette réponse qui correspond à mon besoin, au moins au départ.
Je rentre cette expression
lpad( @row_number ,3,'0') et j'obtiens bien 001, 002, 003, ...
Mais je voudrais démarrer la numérotation à 2. Je tape donc
lpad( @row_number ,3,'2') mais j'obtiens 210, 211, 212 ... Donc '0' ne doit pas être le point de départ ?
Je cherche depuis un moment. Comment dire à QGIS que je veux commencer à 10 par exemple ?, pour avoir 010, 011, 012, ... ou à 100 ?
Merci d'avance, bonne journée
Bonjour à tous
C'est sans doute bien trop tard, mais pour réaliser ceci il suffit de taper, pour commencer la numérotation à 012 :
lpad( @row_number + 11 ,3,'0')
;-)
Hors ligne