Ajouter une valeur dans le champ d'attribut à l'aide d'arcpy

8

J'ai besoin d'ajouter des valeurs à un champ existant dans la table attributaire. Les valeurs doivent être déterminées par les valeurs d'un autre champ de la même table d'attributs. Je ne parviens pas à définir les valeurs dans un autre champ du script. Est-ce que quelqu'un peut m'aider?

poshan
la source

Réponses:

8

Je n'ai pas utilisé de curseurs Arc 10.1, mais c'est apparemment encore plus facile là-bas.

Dans 10.0, il y a plusieurs façons de procéder, mais voici une approche de base pour débutants:

# Create a cursor on a feature class
cur = arcpy.UpdateCursor(myFeatureClass)

# Loop through the rows in the attribute table
for row in cur:
    # The variable sqMiles will get the value from the column
    # named 'Area_Miles'
    sqMiles = row.getValue('Area_Miles')
    # Calculate how many acres
    acres = (sqMiles * 640)
    # Assign the acres to a column named 'Area_Acres'
    row.setValue('Area_Acres', acres)
    # Apply the change
    cur.updateRow(row)

    # The loop will then move on to the next row/feature

Une version plus simple et condensée:

cur = arcpy.UpdateCursor(myFeatureClass)

for row in cur:
    row.setValue('Area_Acres', row.getValue('Area_Miles') * 640)
    cur.updateRow(row)

Voir: http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//000v0000003m000000

À M
la source
5
Tom, veuillez réécrire TOUS les "fichiers d'aide" d'ESRI en utilisant la méthode que vous avez utilisée dans cette réponse. Ensuite, plus de gens comprendront et le monde sera un endroit plus heureux.
Jason Miller
2
Tom, veuillez suivre les conseils de @JasonMiller. Et merci TRÈS d'avoir mis le doigt dessus pour nous. Je me considérais comme analphabète, mais maintenant plus.
FaCoffee
2

Eh bien, il existe plusieurs façons de procéder.

  1. Si le calcul est assez simple, j'utiliserais l' outil Calculer le champ . Si vous avez besoin d'utiliser le paramètre code_block, j'irais avec l'option # 2 car il n'est pas toujours facile d'obtenir la syntaxe correcte dans un script (ou dans l'outil lui-même d'ailleurs).

  2. Si vous souhaitez plus de scripts à l'avenir, je vous recommande fortement d'utiliser des curseurs . Vous pouvez écrire les valeurs d'un champ dans une liste Python et effectuer vos calculs sur chaque élément de la liste avec une boucle for, puis réécrire la liste dans votre nouveau champ.

J'utilise rarement Calculer le Champ car il est plus facile de scripter des curseurs pour toutes les formules sauf les plus simples.

Paul
la source