Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#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)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

Pied de page des forums

Powered by FluxBB