#1 Tue 26 May 2015 11:46
- julien1991
- Participant occasionnel
- Date d'inscription: 20 Feb 2015
- Messages: 17
Transformation des données dans la table attributaire
Bonjour,
J'aimerais transformer un champs texte en champs court.
C'est à dire garder mon champs texte ou j'ai différentes couleurs: rouge, bleu, jaune... et avoir un champs numérique ou le rouge=1, le bleu=2.
Je pourrais faire ca manuellement en créant une autre colonne et en mettant 1 à coté du rouge mais quand on a une centaine d'enregistrements il est plus simple de trouver la commande d'Arcgis qui permet cela.
J'ai vu qu'on pouvait faire cela par la selection selon attribut ou le calculateur de champs mais j'ai pas trouvé la marche à suivre.
cordialment
Hors ligne
#2 Tue 26 May 2015 14:13
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: Transformation des données dans la table attributaire
Bonjour
Avec un script python dans la calculatrice de champs, c'est facilement réalisable
On ajoute un champ en entier
on coche en premier script python et non VB Script dans la calculatrice de champs
Ensuite on coche le mode avancé.
Dans la première partie, on fait l'appel de la fonction que l'on va créer plus bas c'est à dire
Code:
calcul(!champArcgisCouleur!)
et dans la seconde partie on écrit la fonction
Code:
def calcul(couleur) : if couleur=='rouge' : valeur=1 elif couleur=='vert' : valeur =2 elif couleur=='bleu' : valeur=3 else : valeur =0 return valeur
Attention aux espaces dans le code ils sont importants.
Il ne vous reste plus qu'a rajouter les couleurs dans les elif couleur='...'
A+
Nicolas GRANIER
Hors ligne
#3 Tue 26 May 2015 14:15
- lebon henri
- Participant actif
- Lieu: Vendée
- Date d'inscription: 14 Jan 2008
- Messages: 99
Re: Transformation des données dans la table attributaire
Salut,
Dans ton cas, si tu n'as pas beaucoup de type, le plus simple c'est de sélectionner tout ce égale à rouge et de calculer le second champ avec la valeur voulue. La calculatrice de champs n'agit que sur les entités sélectionnées.
Sinon, tu peux définir une fonction python du genre :
Code:
def calculMonChampCommejeveux(champ1): monDict = {rouge:1, vert:2, bleu:3} valeur = mondict[champ1] return valeur
Dernière modification par lebon henri (Tue 26 May 2015 14:20)
Hors ligne
#4 Tue 26 May 2015 16:40
- julien1991
- Participant occasionnel
- Date d'inscription: 20 Feb 2015
- Messages: 17
Re: Transformation des données dans la table attributaire
Merci de vos réponses
J'ai un champ texte nommé SORTE_COU et un champ entier court nommé cou_chif
Pour la première méthode j'ai bien sélectionne le champ vide "cou_chif" puis calculateur de champs, j'ai mis python ; type nombre ; Fonctions= aucune cochée.
J'ai cocher"afficher le bloc de code" pour avoir les 2parties.
Pour la première partie "Code de script Pre logic
calcul(!cou_chif!)
Pour la seconde partie"cou_chif="
def calcul(SORTE_COU) :
if SORTE_COU=='rouge' :
valeur=1
elif SORTE_COU=='vert' :
valeur =2
elif SORTE_COU=='bleu' :
valeur=3
else :
valeur =0
return valeur
je fais ok il me met"le texte multiligne que vous avez saisi a été placé dans la zone de mise à jour "cou_chif=". S'il s'agit d'un script VBA vous devez sélectionner couper le texte et le mettre dans la première partie.
Avec la deuxième technique (le champs SORTE_COU c'est le champ 7) cou_chif=
def calculSORTE_COU (champ7):
monDict = {rouge:1, vert:2, bleu:3}
valeur = mondict[champ7]
return valeur
J'ai un peu tout essayé en double cliquant sur le champs =!SORTE_COU!
je fais ok ca met calcul des enregistrements et tout de suite après"une défaillance est survenue au cours du traitement..."
Je sais pas trop ou ca bloque
Hors ligne
#5 Tue 26 May 2015 17:38
- lebon henri
- Participant actif
- Lieu: Vendée
- Date d'inscription: 14 Jan 2008
- Messages: 99
Re: Transformation des données dans la table attributaire
Voici la réponse exact : il faut penser à mettre des guillemets pour les textes en python, ce que je n'ai pas fait dans mon exemple. de même petite faute de frappe sur l'appel de la variable monDict.
Et t'avais mis un espace malheureux en renommant la fonction à ta sauce.
Dernière modification par lebon henri (Tue 26 May 2015 17:39)
Hors ligne