Calcular campo (Gestión de datos)

Nivel de licencia:BasicStandardAdvanced

Resumen

Calcula los valores de un campo para una clase de entidad, una capa de entidades o un catálogo de ráster.

Ver ejemplos de usos de la herramienta Calcular campo

Uso

Sintaxis

CalculateField_management (in_table, field, expression, {expression_type}, {code_block})
ParámetroExplicaciónTipo de datos
in_table

Tabla que contiene el campo que se actualizará con el cálculo nuevo.

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

Campo que se actualizará con el cálculo nuevo.

Field
expression

Expresión de cálculo simple que se utiliza para crear un valor que completará las filas seleccionadas.

SQL Expression
expression_type
(Opcional)

Especifique el tipo de expresión que se utilizará.

  • VBLa expresión se escribe en formato VB estándar. Esta es la opción predeterminada.
  • PYTHONLa expresión se escribe en un formato estándar de Python. El uso de propiedades y métodos de geoprocesadores es igual a la creación de un geoprocesador de la versión 9.2.
  • PYTHON_9.3La expresión se escribe en un formato estándar de Python. El uso de propiedades y métodos de geoprocesadores es igual a la creación de un geoprocesador de la versión 9.3.
String
code_block
(Opcional)

Permite introducir un bloque de código para expresiones complejas.

String

Ejemplo de código

Ejemplo de CalculateField (ventana de Python)

La siguiente secuencia de comandos de la ventana de Python muestra cómo utilizar la función CalculateField en el modo inmediato.

import arcpy
arcpy.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")
Ejemplo de CalculateField: calcular centroides

Utilice CalculateField para asignar valores del centroide a campos nuevos.

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

# Import system modules
import arcpy

try: 
    # Set environment settings
    arcpy.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)
Ejemplo de CalculateField: calcular rangos

Utilice CalculateField con un bloque de código para calcular los valores basados en rangos.

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

# Import system modules
import arcpy
 
# Set environment settings
arcpy.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)
Ejemplo de CalculateField: calcular valores aleatorios

Utilice CalculateField para asignar valores aleatorios al campo nuevo.

# Name: CalculateField_Random.py
# Description: Use CalculateField to assign random values to a new field


# Import system modules
import arcpy
 
# Set environment settings
arcpy.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")

Entornos

Temas relacionados

Información sobre licencias

ArcGIS for Desktop Basic: Sí
ArcGIS for Desktop Standard: Sí
ArcGIS for Desktop Advanced: Sí
5/12/2014