#1 Wed 31 March 2010 17:23
- gorias
- Participant actif
- Date d'inscription: 9 Sep 2005
- Messages: 60
[ArcGis9.3.1] Incrementation Identifiant texte
Bonjour à toutes et à tous,
J'ai un petit soucis sous ArcGIS concernant l'incrémentation automatisée d'un champ de type texte sous la forme:
ABC_n, ABC_n+1, ABC_n+2...
Ne connaissant pas l'équivalent de Row_id sous ArcGis, j'ai assayé de contourner le problème en mettant mon champ à jour comme suit :
"ABC_"+"[FID]" mais évidemment cela me donne ABC_[FID], ou bien "ABC_"+chr([FID]) mais non...
Quelqu'un aurait-il une solution ? Merci d'avance !
Bonne journée
Grégory
Hors ligne
#2 Wed 31 March 2010 18:07
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [ArcGis9.3.1] Incrementation Identifiant texte
Salut,
Ne serait ce pas ? ---> "ABC_"+'[FID]'
A+
Joël
Hors ligne
#3 Thu 01 April 2010 10:13
- gorias
- Participant actif
- Date d'inscription: 9 Sep 2005
- Messages: 60
Re: [ArcGis9.3.1] Incrementation Identifiant texte
Salut Spacejo
ta solution produit un message d'erreur..
En tatonnant un peu j'ai fini par trouver ce que je voulais : "ABC_"+Format([FID]+1)
le"+1" vient du fait que le champ "FID" est incrémenté à partir de zéro
Bonne journée la communauté !
greg
Hors ligne
#4 Thu 01 April 2010 11:37
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [ArcGis9.3.1] Incrementation Identifiant texte
Effectivement associé un champs texte et un numérique (FID) ne convient pas.
Une conversion s'impose avec "format"
Merci du suivi
A+
Joël
Dernière modification par Spacejo (Thu 01 April 2010 11:43)
Hors ligne
#5 Thu 07 June 2012 19:39
- iDCao
- Juste Inscrit !
- Date d'inscription: 19 Sep 2011
- Messages: 4
Re: [ArcGis9.3.1] Incrementation Identifiant texte
Bonjour,
Je reviens sur ce sujet.
J'ai bien réussit à faire 3 lettre + FID mais ma problématique est que je dois avoir 9 charactères.
Je dois avoir à la fin : NDI999999
Pour l'instant j'utilise : "NDI" & '[FID]' + 1 qui incrémente parfaitement mais il manque des numéros.
Exemples :
NDI000001
NDI000002
NDI000003
...
Help!
Merci de votre aide.
Dernière modification par iDCao (Thu 07 June 2012 19:40)
Hors ligne
#6 Fri 08 June 2012 08:21
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: [ArcGis9.3.1] Incrementation Identifiant texte
Bonjour,
Ceci devrait vous aider.
Analyseur : Python
Cocher la case "Afficher le bloc de code"
Code de script Pre-Logic :
Code:
def calcul (nombre) : longueurNumero = 6 prefixe ="NDI" zero= "0" * (longueurNumero - len(str(nombre))) chaine = prefixe + zero + str(nombre) return chaine
Nom du champ que vous calculer =
Code:
calcul ( !FID! )
A+
Nicolas GRANIER
Hors ligne
#7 Fri 08 June 2012 17:16
- Sylvain M.
- Participant assidu
- Lieu: Saint-Pierre-des-Nids (53)
- Date d'inscription: 8 Sep 2005
- Messages: 995
Re: [ArcGis9.3.1] Incrementation Identifiant texte
Je fais souvent ce genre de calcul avec les chiffres codés sur x caractères. Pour cela j'utilise la fonction right() (droite) de la sorte, sans passer par la programmation :
Code:
"NDI"&right("00000"&[FID]+1,6)
A+
Sylvain M.
Sylvain M.
Hors ligne
#8 Fri 08 June 2012 17:48
- Renaud
- Membre
- Lieu: Ploemeur (56)
- Date d'inscription: 9 Mar 2006
- Messages: 2315
Re: [ArcGis9.3.1] Incrementation Identifiant texte
Mais c'est bon sang bien sûr !
Merci pour cette utilisation de right(), ça va raccourcir mes formules
Renaud Mouche
Hors ligne
#9 Sat 09 June 2012 16:37
Re: [ArcGis9.3.1] Incrementation Identifiant texte
Bonjour,
En python (choisir : Analyseur : Python), il est aussi possible de faire plus court de la même manière que le code VBScript indiquer par Sylvain :
Code:
"NDI%s" % (str(!FID!+1).zfill(6))
A+
Franck
Hors ligne
#10 Fri 07 September 2012 13:01
- iDCao
- Juste Inscrit !
- Date d'inscription: 19 Sep 2011
- Messages: 4
Re: [ArcGis9.3.1] Incrementation Identifiant texte
Bonjour à tous
Merci de vos réponses avec des techniques différentes très enrichissantes !
Maintenant je maitrise l'incrémentation Numérique.
Passage à l'étape suivante
Une nouvelle problématique s'ouvre à moi maintenant quand je dépasse NDI999999 Je dois passer à NDIA00001 puis NDIA00002 puis NDIA00003... NDIA99999, NDIB00001...
J'arrive à faire le décompte Alphanumérique mais j'ai du mal à l'intégrer dans le code de "Nicolas Granier" en Python.
Si vous pouvez me donner un coup de pouce...
A très bientôt!
Gaël
Dernière modification par iDCao (Fri 07 September 2012 14:26)
Hors ligne
#11 Fri 07 September 2012 16:04
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: [ArcGis9.3.1] Incrementation Identifiant texte
Bonjour,
Voici un exemple pour passer de NDI à NDIA
Code:
def calcul (nombre) : if nombre>999999 : new_num =nombre - 1000000 prefixe ="NDIA" else : prefixe ="NDI" new_num =nombre longueurNumero = 6 zero= "0" * (longueurNumero - len(str(nombre+1))) chaine = prefixe + zero + str(nombre+1) return chaine
Si vous devez aller jusqu'à la lettre z, je vous conseille d'améliorer le code.
A+
Dernière modification par Nicolas Granier (Fri 07 September 2012 16:07)
Hors ligne