Calculer un champ (Gestion des données)

Récapitulatif

Calcule les valeurs d'un champ pour une classe d'entités, une couche d'entités ou un catalogue d'images.

Afficher des exemples d'utilisation de l'outil Calculer un champ

Utilisation

Syntaxe

CalculateField_management (in_table, field, expression, {expression_type}, {code_block})
ParamètreExplicationType de données
in_table

Table en entrée contenant le champ qui sera mis à jour avec le nouveau calcul.

Mosaic Layer; Raster Catalog Layer; Raster Layer; Table View
field

Champ qui sera mis à jour avec le nouveau calcul.

Field
expression

Expression de calcul simple utilisée pour créer une valeur qui sera indiquée dans les lignes sélectionnées.

SQL Expression
expression_type
(Facultatif)

Précisez le type d'expression qui sera utilisé.

  • VBL'expression sera écrite au format VB standard. Il s'agit de l'option par défaut.
  • PYTHONL'expression sera écrite au format Python standard. Utiliser des propriétés et des méthodes de géoprocesseur revient à créer un géoprocesseur de version 9.2.
  • PYTHON_9.3L'expression sera écrite au format Python standard. Utiliser des propriétés et des méthodes de géoprocesseur revient à créer un géoprocesseur de version 9.3.
String
code_block
(Facultatif)

Permet de saisir un bloc de code pour des expressions complexes.

String

Exemple de code

Exemple d'utilisation de la fonction CalculateField (fenêtre Python)

Le script de fenêtre Python suivant illustre l'utilisation de la fonction CalculateField en mode immédiat.

import arcpy
from arcpy import env
env.workspace = "C:/data"
arcpy.AddField_management("vegtable.dbf", "VEG_TYP2", "TEXT", "", "", "20")
arcpy.CalculateField_management("vegtable.dbf", "VEG_TYP2", 
                                '!VEG_TYPE!.split(" ")[-1]', "PYTHON")
Exemple d'utilisation de la fonction CalculateField  : calculer des centroïdes

Utilisez CalculateField pour affecter des valeurs de centroïde à de nouveaux champs.

# Name: CalculateField_Centroids.py
# Description: Use CalculateField to assign centroid values to new fields

 
# Import system modules
import arcpy
from arcpy import env

try: 
    # Set environment settings
    env.workspace = "C:/data/airport.gdb"
 
    # Set local variables
    inFeatures = "parcels"
    fieldName1 = "xCentroid"
    fieldName2 = "yCentroid"
    fieldPrecision = 18
    fieldScale = 11
    # Expressions are calculated using the Shape Field's geometry property
    expression1 = "float(!SHAPE.CENTROID!.split()[0])"
    expression2 = "float(!SHAPE.CENTROID!.split()[1])"
 
    # Execute AddField
    arcpy.AddField_management(inFeatures, fieldName1, "DOUBLE", 
                              fieldPrecision, fieldScale)
    arcpy.AddField_management(inFeatures, fieldName2, "DOUBLE", 
                              fieldPrecision, fieldScale)
 
    # Execute CalculateField 
    arcpy.CalculateField_management(inFeatures, fieldName1, expression1,
                                    "PYTHON")
    arcpy.CalculateField_management(inFeatures, fieldName2, expression2,
                                    "PYTHON")
except Exception, e:
    # If an error occurred, print line number and error message
    import traceback, sys
    tb = sys.exc_info()[2]
    print "Line %i" % tb.tb_lineno
    print e.message

Exemple d'utilisation de la fonction CalculateField : calculer des plages

Utilisez CalculateField avec un bloc de code pour calculer des valeurs à partir de plages.

# Name: CalculateField_Ranges.py
# Description: Use CalculateField with a codeblock to calculate values
#  based on ranges

 
# Import system modules
import arcpy
from arcpy import env
 
# Set environment settings
env.workspace = "C:/data/airport.gdb"
 
# Set local variables
inTable = "parcels"
fieldName = "areaclass"
expression = "getClass(float(!SHAPE.area!))"
codeblock = """def getClass(area):
    if area <= 1000:
        return 1
    if area > 1000 and area <= 10000:
        return 2
    else:
        return 3"""
 
# Execute AddField
arcpy.AddField_management(inTable, fieldName, "SHORT")
 
# Execute CalculateField 
arcpy.CalculateField_management(inTable, fieldName, expression, "PYTHON", 
                                codeblock)
Exemple d'utilisation de la fonction CalculateField  : calculer des valeurs aléatoires

Utilisez CalculateField pour affecter des valeurs aléatoires à un nouveau champ.

# Name: CalculateField_Random.py
# Description: Use CalculateField to assign random values to a new field
 
  
# Import system modules
import arcpy
from arcpy import env
 
# Set environment settings
env.workspace = "C:/data/airport.gdb"
  
# Set local variables
inFeatures = "parcels"
fieldName = "RndValue"
expression = "arcgis.rand('Integer 0 10')"
 
# Execute AddField
arcpy.AddField_management(inFeatures, fieldName, "LONG")
 
# Execute CalculateField 
arcpy.CalculateField_management(inFeatures, fieldName, expression, "PYTHON")

Environnements

Rubriques connexes

Informations de licence

ArcView : Oui
ArcEditor : Oui
ArcInfo : Oui

7/10/2012