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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 28 February 2018 15:26

piedro25
Participant occasionnel
Date d'inscription: 22 Dec 2016
Messages: 43

[PYTHON] modifier plusieurs champs d'une table en un seul code

Bonjour à tous !

Voilà je travaille actuellement avec des tables ayant des libellés que j'aimerais modifier.

Cependant j'ai beaucoup de champs à modifier en même temps, j'ai donc pensé recourir à un code python pour n'avoir qu'a renseigner ma table, changer le nom des champs et lancer le programme.

Je suis donc passé par le model builder et lors de l'exportation en code python j'obtiens ça :

Code:

# Import arcpy module
import arcpy


# Local variables:
Comptages_voyageurs_STIF_09_16_1 = "F:\\03_Mobilites_multimodales\\SIG_Carto\\Couches\\Comptages des voyageurs localises STIF\\Estimations_frequentations_gares_VO.gdb\\Comptages_voyageurs_STIF_09_16_1"
Classe_d_entites_en_sortie = Comptages_voyageurs_STIF_09_16_1
Nom_du_champ = "diff_prctg"
Nouveau_nom_de_champ = "diff_prctrrr"

# Process: Modifier le champ
arcpy.AlterField_management(Comptages_voyageurs_STIF_09_16_1, Nom_du_champ, Nouveau_nom_de_champ, "", "LONG", "4", "NULLABLE", "false")

Ce code marche bien pour changer un seul attribut. Mais comme dit précédemment j'aimerais en changer plusieurs à la fois.
J'ai donc parcourut l'aide d'arc gis online et j'ai établit un nouveau code que voici en copiant le script autonome issu de cette adresse : http://desktop.arcgis.com/fr/arcmap/10. … erties.htm

Code:

#Import geoprocessing
import arcpy

#Set workspace
arcpy.env.workspace = r'F:\03_Mobilites_multimodales\SIG_Carto\Couches\Comptages des voyageurs localises STIF\Estimations_frequentations_gares_VO.gdb\Comptages_voyageurs_STIF_09_16'
arcpy.overwriteOutput = True

#Loop through feature classes looking for a field named 'elev'
fcList = arcpy.ListFeatureClasses() #get a list of feature classes
for fc in fcList:  #loop through feature classes
    fieldList = arcpy.ListFields(fc)  #get a list of fields for each feature class
    for field in fieldList: #loop through each field
        if field.name() == 'Différenc':
            arcpy.AlterField_management(Comptages_voyageurs_STIF_09_16,fc, field.name, diff_prtcg)

Mon idée était ensuite de faire des itérations successives sur les listes grâce à IF

En lançant le module je n'ai pas d'erreur mais la table ne se met pas à jours.

Pourriez-vous donc m'aider ?

Hors ligne

 

#2 Fri 09 March 2018 12:35

JulienRscl
Participant occasionnel
Lieu: Lyon
Date d'inscription: 23 May 2013
Messages: 26

Re: [PYTHON] modifier plusieurs champs d'une table en un seul code

Bonjour,
Si votre champ ne se met pas à jour et que vous n'avez pas d'erreur, c'est très certainement que votre condition préalable (if field.name() == 'Différenc') n'a aucune correspondante.
En rajoutant un print 'ok', juste après votre condition, vous verrez si vous rentrez bien dans cette partie de code.
Si tel n'est pas le cas alors la condition est à revoir.
Autre chose : l'accent dans le nom du champ ne va certainement pas aider à arriver à votre fin.

Hors ligne

 

#3 Tue 13 March 2018 12:42

piedro25
Participant occasionnel
Date d'inscription: 22 Dec 2016
Messages: 43

Re: [PYTHON] modifier plusieurs champs d'une table en un seul code

Hello et merci d'avoir répondu.

J'ai trouvé la solution à mon problème et sans à avoir à passer par Python.
En sélectionnant l'outil renommer dans la arctool box j'ai fait clic droit et selection "Par lot". J'ai ensuite eu simplement à sélectionner les couches que je voulais renommer ainsi que les attributs pour les changer en même temps !

Hors ligne

 

Pied de page des forums

Powered by FluxBB