#1 Thu 12 December 2013 09:15
- Juliette D
- Participant occasionnel
- Date d'inscription: 12 Dec 2013
- Messages: 13
renommer les enregistrements d'un champs
Bonjour,
Nouvelle dans le domaine des SIG je connais pas encore bien le logiciel sur lequel je travaille (ARCGIS 10.0).
Dans une table attributaire, j'ai un champs rempli par des 1 et des 0.
Je souhaiterais renommer les enregistrements 1 par "PLU" et les enregistrements 0 par "POS".
J'imagine que ce genre d'opération simple doit être possible mais malgré mes recherches je ne trouve pas.
Merci d'avance pour votre aide !
Hors ligne
#2 Thu 12 December 2013 10:04
- maxthethug
- Participant occasionnel
- Lieu: Chaumont
- Date d'inscription: 15 Nov 2011
- Messages: 21
Re: renommer les enregistrements d'un champs
Bonjour,
A mon avis ton champ actuel est de type numérique, tu ne pourras pas remplacer directement les valeurs car il n'acceptera pas de caractères autres que du numérique. Je procéderais de la façon suivante:
- Créer un champ vide de type texte
- Copier les valeurs de ton champ initial dans le champ que tu viens de créer
- Utiliser la fonction replace d'arggis qui se trouve dans le calculateur de champ dont le principe doit être expliqué ici : http://help.arcgis.com/fr/arcgisdesktop … 002m000000
Je n'ai pas le logiciel sous la main actuellement donc je me base sur mes souvenirs. Peut être y'a-t-il un moyen plus simple d'obtenir le résultat escompté, peut-être en éditant directement le fichier .dbf qui contient les données attributaires de ta couche.
Cordialement
Maxime
Hors ligne
#3 Thu 12 December 2013 11:09
- Juliette D
- Participant occasionnel
- Date d'inscription: 12 Dec 2013
- Messages: 13
Re: renommer les enregistrements d'un champs
Merci beaucoup pour cette réponse très rapide !
Je rencontre malheureusement un problème au cours du traitement.
Voici la formule que j'ai rentrée à l'aide de la calculatrice de champs en Python : DOCURBA.replace("1", "PLU")
Dans les résultats de géotraitement voici le message d'erreur qui s'affiche
ERROR 000539: Error running expression: .replace("1", "PLU") <type'exceptions.SyntaxError'>: invalid syntax (<string>, line1)
Voici ce que Arcgis m'affiche dans l'aide quand je clique sur le code d'erreur :
Ce code d’erreur couvre plusieurs erreurs Python :
Exemple d’erreur 1 : exceptions.TypeError: impossible de concaténer des objets ‘str’ et ‘int’.
Ce qui précède est une erreur spécifique à Python. Le calcul tente d’ajouter ou de concaténer une chaîne ou un nombre.
Exemple d’erreur 2 : Propriété de distance non valide. Les propriétés valides sont les suivantes : type, extent, centroid, label, firstpoint, lastpoint, area, length, ismultipart, partcount
Ce qui précède est une erreur d’utilisation de l’objet géométrie. La méthode de distance n’est pas une méthode valide de l’objet géométrie.
J'ai bien vérifié que le champs que j'avais crée était de type texte (chaîne).
Le nombre d'enregistrement de ma table est important, est ce que cela peut venir de là ?
Merci encore pour votre réponse
Hors ligne
#4 Thu 12 December 2013 11:51
- maxthethug
- Participant occasionnel
- Lieu: Chaumont
- Date d'inscription: 15 Nov 2011
- Messages: 21
Re: renommer les enregistrements d'un champs
De rien.
Apparemment, il y a un problème de typage au niveau de tes données donc rien à voir avec le nombre d'enregistrements
Essaye avec cette fonction : DOCURBA.replace(str(1),"PLU")
J'y vais un peu à l'aveuglette vu que je n'ai pas pratiqué ARCGIS depuis plus d'un an donc je peux me tromper...
Si ma solution ne marche pas, j'invite des personnes plus compétentes que moi ou ayant le logiciel sous la main à résoudre ton problème.
En attendant, essaye de mettre ton shapefile en pièce jointe avec .dbf .proj et tous les fichiers liés en pièce jointe zippée si ce n'est pas trop volumineux. Comme ça je pourrai voir si je ne peux pas trouver une solution sous qgis applicable à arcgis
Hors ligne
#5 Thu 12 December 2013 11:57
- anne13
- Participant actif
- Lieu: Villeurbanne
- Date d'inscription: 12 May 2009
- Messages: 71
Re: renommer les enregistrements d'un champs
Bonjour,
pour faire plus simple :
Une fois le champ texte créé, sélectionner touts les objets pour lesquels le champ d'origine est à 0. Utiliser la calculatrice sur le champ texte (clic droit sur l'intitulé du champ dans la table et "calculer les valeurs") et mettre la valeur "POS", faire attention de faire exécuter le calcul sur les entités sélectionnées, valider.
Recommencer avec la sélection des objets pour lesquels le champ d'origine est à 1 et calculer le champ texte en mettant la valeur "PLU".
Ca permet d'éviter de passer par du python avec replace...
Bon courage.
Anne
Anne B, Ville de Villeurbanne
Hors ligne
#6 Thu 12 December 2013 12:04
- maxthethug
- Participant occasionnel
- Lieu: Chaumont
- Date d'inscription: 15 Nov 2011
- Messages: 21
Re: renommer les enregistrements d'un champs
Je savais bien qu'il y avait plus simple que de passer par python mais je ne me souvenais plus de cette solution.
Merci Anne d'avoir simplifié les choses
Hors ligne
#7 Thu 12 December 2013 12:28
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: renommer les enregistrements d'un champs
Salut,
Une autre possibilité est de passer par un script VB avec la calculette (cocher VB):
Aprés avoir transformé le champ "DOCURBA" en string.
Par exemple:
Code:
LaVariable=[DOCURBA] If LaVariable="1" then LaVariable="PLU" ElseIf LaVariable="0" then LaVariable="POS" End If
Ne pas oublier de placer "LaVariable" dans le champ en dessous du code nommé -> "DOCURBA="
A+
Joël
Dernière modification par Spacejo (Thu 12 December 2013 12:29)
Hors ligne
#8 Thu 12 December 2013 12:52
- Juliette D
- Participant occasionnel
- Date d'inscription: 12 Dec 2013
- Messages: 13
Re: renommer les enregistrements d'un champs
Merci pour toutes vos réponses bien utiles pour comprendre cette manip.
Je note l'astuce d'Anne qui m'a fait gagner un temps fou !
Bonne continuation
Hors ligne