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

Rencontres QGIS 2025

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

#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

 

Pied de page des forums

Powered by FluxBB