Pages: 1
- Sujet précédent - Inserer des valeurs dans un champ TEXT existant dans un layer - Sujet suivant
#1 Thu 14 June 2012 06:58
- Bertin19
- Juste Inscrit !
- Date d'inscription: 14 Dec 2007
- Messages: 8
Inserer des valeurs dans un champ TEXT existant dans un layer
Bonjour,
je suis nouveau dans la programmation Python pour argis 10.
j'ai une couche de données (route_a_chauss_4.shp).
Je suis en train de créer un script qui compare les valeurs de deux champs (LARGECHAUS et NOMBRVOIES) de ma table, et rempli un troisieme champ (Viabilite) que j'ai déjà créé dans ma même table. L'insertion des valeurs dans le champ "Viabilite" ne marche pas.
Quelqu'un pourrait-il m'aider ?
Voici mon code :
Code:
import arcpy from arcpy import env arcpy.env.workspace = "D:/Exo_Arcpy/reseauRoutier.mdb" couche = "route_a_chauss_4" curseur = arcpy.SearchCursor(couche)# recupere le curseur dans la table nb, tot = 0, 0 for ligne in curseur: nb += 1 largeurChaussee = ligne.LARGECHAUS nbreVoies = ligne.NOMBRVOIES champViabilite = ligne.Viabilite print "Largeur de chaussee :",ligne.LARGECHAUS, "Voies :",nbreVoies # conditions pour remplir la table if largeurChaussee >= 7 and nbreVoies >2 : viab = "Route de bonne viabilite." print viab ligne.Viabilite = viab elif largeurChaussee < 7 and nbreVoies == 2: viab = "Route de moyenne viabilite." ligne.Viabilite = viab else : viab = "Route etroite regulierement entretenue." ligne.Viabilite = viab tot += ligne.LARGECHAUS print "Nombre d'elt de largeur de chaussee :",nb del curseur, ligne
Dernière modification par Bertin19 (Thu 14 June 2012 06:59)
Hors ligne
#2 Thu 14 June 2012 11:34
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: Inserer des valeurs dans un champ TEXT existant dans un layer
Bonjour,
Quand on met à jour les valeurs d'une table, il faut utiliser UpdateCursor et non pas SearchCursor.
De plus je vous propose une syntaxe différente pour lire et écrire dans une table
au lieu de
Code:
curseur.NOM_DU_CHAMP
utilisez plutôt
Code:
curseurs=arcpy.UpdateCursor(maCouche) for curseur in curseurs :
Code:
curseur.getValue("NOM_DU_CHAMP") #pour lire le contenu du champ curseur.setValue("NOM_DU_CHAMP",NouvelleValeur) #pour ecrire dans la table curseurs.UpdateRow(curseur) #pour enregistrer votre ligne
A+
Dernière modification par Nicolas Granier (Thu 14 June 2012 11:34)
Hors ligne
#3 Thu 14 June 2012 16:24
- Bertin19
- Juste Inscrit !
- Date d'inscription: 14 Dec 2007
- Messages: 8
Re: Inserer des valeurs dans un champ TEXT existant dans un layer
Super! Ca a marché !!!!
Merci de ton aide!
A bientôt...
Hors ligne
Pages: 1
- Sujet précédent - Inserer des valeurs dans un champ TEXT existant dans un layer - Sujet suivant