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

Pour sécuriser votre compte sur les forums du GeoRezo, nous demandons de changer votre mot de passe.

Vous allez recevoir un message pour effectuer ce changement de mot de passe.

Merci de bien respecter les règles préconisées.

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

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

 

Pied de page des forums

Powered by FluxBB