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, ligneDerniè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 ligneA+
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


