Calculer un champ (Gestion des données)

Niveau de licence :De baseStandardAvancé

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_9.3")
Exemple 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
 
    # Add fields
    arcpy.AddField_management(inFeatures, fieldName1, "DOUBLE", 
                              fieldPrecision, fieldScale)
    arcpy.AddField_management(inFeatures, fieldName2, "DOUBLE", 
                              fieldPrecision, fieldScale)
 
    # Calculate centroid
    arcpy.CalculateField_management(inFeatures, fieldName1, 
                                    "!SHAPE.CENTROID.X!",
                                    "PYTHON_9.3")
    arcpy.CalculateField_management(inFeatures, fieldName2, 
                                    "!SHAPE.CENTROID.Y!",
                                    "PYTHON_9.3")
except Exception as e:
    # If an error occurred, print line number and error message
    import traceback
    import sys
    tb = sys.exc_info()[2]
    print("Line {0}".format(tb.tb_lineno))
    print(e.message)
Exemple 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_9.3", 
                                codeblock)
Exemple 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_9.3")

Environnements

Thèmes connexes

Informations de licence

ArcGIS for Desktop Basic : Oui
ArcGIS for Desktop Standard : Oui
ArcGIS for Desktop Advanced : Oui
9/12/2013