Calcular campos (múltiple) (Administración de datos)

Resumen

Calcula los valores de dos o más campos para una clase de entidad, una capa de entidades o un ráster.

Uso

    Precaución:

    Esta herramienta modifica los datos de entrada. Consulte Herramientas que modifican o actualizan los datos de entrada para obtener más información y estrategias para evitar cambios de datos no deseados.

  • Para obtener más información sobre las expresiones de Python, consulte Ejemplos de Python de Calcular campo.

    Para obtener más información sobre las expresiones de Arcade, consulte la Guía de ArcGIS de Arcade.

    Para obtener más información sobre las expresiones de SQL, consulte Calcular valores de campo.

  • Cuando se utiliza con un conjunto seleccionado de entidades, como las creadas a partir de una consulta en la herramienta Crear capa de entidades o Seleccionar capa por atributo, esta herramienta solamente actualiza los registros seleccionados.

  • Los valores de campo existentes se sobrescriben. Realice una copia de la tabla de entrada si desea conservar los valores originales.

  • En los cálculos en Python, los nombres de campo deben estar entre signos de admiración (por ejemplo, !fieldname!).

    En los cálculos de Arcade, los nombres de campo deben tener el prefijo $feature. (por ejemplo, $feature.fieldname).

  • Para calcular cadenas para campos de texto o de caracteres, en el cuadro de diálogo la cadena debe estar entre comillas dobles (por ejemplo, "cadena") y, en un script, la cadena entre comillas dobles también debe estar entre comillas simples (por ejemplo, '"string"').

  • Si desea calcular un campo para que sea un valor numérico, introduzca el valor numérico en el parámetro Expresión sin comillas alrededor del valor.

  • Puede crear expresiones complejas utilizando el parámetro Bloque de código. Introduzca el bloque de código directamente en el cuadro de diálogo o como una cadena en el script. La expresión y el bloque de código están conectados. El bloque de código debe estar relacionado con la expresión; el resultado del bloque de código debe entregarse a la expresión.

    El parámetro Bloque de código solo se admite en expresiones de Python.

  • Puede utilizar el módulo de Python math y formateo en el parámetro Bloque de código. También puede importar módulos adicionales. El módulo math proporciona funciones de representación y de teoría de números, funciones potencia y logarítmicas, funciones trigonométricas, funciones de conversión angular, funciones hiperbólicas y constantes matemáticas. Para obtener más información sobre el módulo math, consulte la Ayuda de Python.

  • Para calcular la información de geometría en Python, use las propiedades de objeto Geometry. Por ejemplo, utilice una expresión de !shape.pointCount! para calcular el número de vértices de una entidad.

    Nota:

    La herramienta Calcular atributos de geometría admite cálculos similares.

    Para calcular el área y la longitud en Python, use los métodos getArea y getLength con un método y un tipo de unidad.

    • Para calcular el área geodésica de polígonos en kilómetros cuadrados, utilice la siguiente expresión:
      !shape.getArea('GEODESIC', 'SQUAREKILOMETERS')!
    • Para calcular la longitud plana de polilíneas (o polígonos) en yardas, utilice la siguiente expresión:
      !shape.getArea('PLANAR', 'YARDS')

    Consulte los objetos Polygon y Polyline para obtener más información.

    Más información sobre las herramientas de geoprocesamiento y las unidades lineales y de área

  • Si trabaja con datos vinculados, solo puede actualizar los campos de la tabla de origen. No se pueden actualizar los campos de la tabla vinculada. Para realizar un cálculo en la tabla vinculada, realice el cálculo directamente en esa tabla.

  • Las expresiones de Python que intentan concatenar campos de cadena de caracteres que incluyen un nulo o dividen entre un valor cero devolverán nulo para ese valor de campo.

  • Las expresiones SQL permiten cálculos más rápidos en servicios de entidades y geodatabases corporativas. En lugar de realizar cálculos entidad por entidad o fila por fila, se define una sola solicitud para el servidor o la base de datos, lo cual genera cálculos más rápido.

    Solamente los servicios de entidades y las geodatabases corporativas son compatibles con expresiones de SQL. Para otros formatos, utilice expresiones de Python o Arcade.

    El uso de la opción SQL para el parámetro Tipo de expresión presenta las siguientes limitaciones:

    • La opción solo se admite con geodatabases corporativas de Db2, Oracle, PostgreSQL, SAP HANA y SQL Server.
    • No se admite el cálculo de valores de campo en tablas unidas.
    • No se admiten datos de geodatabases corporativas versionados y archivados.
    • No es posible deshacer operaciones de geoprocesamiento.

    Consulte la ayuda de las expresiones SQL en la documentación del proveedor de base de datos.

Parámetros

EtiquetaExplicaciónTipo de datos
Tabla de entrada

Tabla que contiene los campos que se actualizarán con los cálculos nuevos.

Table View; Raster Layer; Mosaic Layer
Tipo de expresión

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

Si la entrada es un servicio de entidades, el tipo de expresión predeterminado es SQL. Para cualquier otro tipo de entrada, el tipo de expresión predeterminado es Python.

Para obtener más información sobre las expresiones de Python, consulte Ejemplos de Python de Calcular campo.

Para obtener más información sobre las expresiones de Arcade, consulte la Guía de ArcGIS de Arcade.

Para obtener más información sobre las expresiones de SQL, consulte Calcular valores de campo.

  • PythonSe utilizará el tipo de expresión de Python.
  • ArcadeSe utilizará el tipo de expresión de Arcade.
  • SQLSe utilizará el tipo de expresión de SQL.
  • VBScriptSe utilizará el tipo de expresión VBScript.
String
Campos

Los campos que se calcularán, sus expresiones y una cláusula WHERE.

La expresión SQL opcional se utilizará para seleccionar un subconjunto de registros. Solo se calcularán los registros que coincidan con esta cláusula WHERE. Si la cláusula WHERE se deja en blanco, se calcularán todos los registros. Para obtener más información sobre la sintaxis SQL, consulte Referencia SQL para las expresiones de consulta utilizadas en ArcGIS.

Value Table
Bloque de código
(Opcional)

Un bloque de código que se utilizará para expresiones complejas.

No se puede utilizar una función para devolver varios valores.

String
Aplicar dominios
(Opcional)

Especifica si se aplican reglas de dominio de campo.

  • Activado: se aplican reglas de dominio de campo. Si un campo no se puede actualizar, el valor del campo no se modifica y los mensajes de la herramienta incluyen un mensaje de advertencia.
  • Desactivado: no se aplican reglas de dominio de campo. Esta es la configuración predeterminada
Boolean

Salida derivada

EtiquetaExplicaciónTipo de datos
Tabla de Salida

La tabla actualizada.

Table View; Raster Layer; Mosaic Layer

arcpy.management.CalculateFields(in_table, expression_type, fields, {code_block}, {enforce_domains})
NombreExplicaciónTipo de datos
in_table

Tabla que contiene los campos que se actualizarán con los cálculos nuevos.

Table View; Raster Layer; Mosaic Layer
expression_type

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

  • PYTHON3Se utilizará el tipo de expresión de Python.
  • ARCADESe utilizará el tipo de expresión de Arcade.
  • SQLSe utilizará el tipo de expresión de SQL.
  • VBSe utilizará el tipo de expresión VBScript.

Si la entrada es un servicio de entidad, el tipo de expresión predeterminado es SQL. Para cualquier otro tipo de entrada, el tipo de expresión predeterminado es PYTHON3.

Para obtener más información sobre las expresiones de Python, consulte Ejemplos de Python de Calcular campo.

Para obtener más información sobre las expresiones de Arcade, consulte la Guía de ArcGIS de Arcade.

Para obtener más información sobre las expresiones de SQL, consulte Calcular valores de campo.

String
fields
[[Field Name, Expression, {Where Clause}],...]

Los campos que se calcularán, sus expresiones y una cláusula WHERE.

La expresión SQL opcional se utilizará para seleccionar un subconjunto de registros. Solo se calcularán los registros que coincidan con esta cláusula WHERE. Si la cláusula WHERE se deja en blanco, se calcularán todos los registros. Para obtener más información sobre la sintaxis SQL, consulte Referencia SQL para las expresiones de consulta utilizadas en ArcGIS.

Value Table
code_block
(Opcional)

Un bloque de código que se utilizará para expresiones complejas.

No se puede utilizar una función para devolver varios valores.

String
enforce_domains
(Opcional)

Especifica si se aplican reglas de dominio de campo.

  • ENFORCE_DOMAINSSe aplican reglas de dominio de campo.
  • NO_ENFORCE_DOMAINSNo se aplican reglas de dominio de campo. Esta es la opción predeterminada.
Boolean

Salida derivada

NombreExplicaciónTipo de datos
out_table

La tabla actualizada.

Table View; Raster Layer; Mosaic Layer

Muestra de código

Ejemplo 1 de CalculateFields (ventana de Python)

El siguiente script de la ventana de Python demuestra cómo utilizar la función CalculateFields en el modo inmediato con el tipo de expresión Python.

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"
arcpy.management.CalculateFields("parcels", "PYTHON3", 
                                 [["xCentroid", "!SHAPE.CENTROID.X!"], 
                                  ["yCentroid", "!SHAPE.CENTROID.Y!"]])
Ejemplo 2 de CalculateFields (ventana de Python)

El siguiente script de la ventana de Python demuestra cómo utilizar la función CalculateFields en el modo inmediato con el tipo de expresión SQL.

import arcpy
arcpy.management.CalculateFields("<a feature service url>", "SQL", 
                                 [["ceiling_field", "CEILING(field1)"], 
                                  ["floor_field", "FLOOR(field1)"]])
Ejemplo 3 de CalculateFields (ventana de Python)

El siguiente script de la ventana de Python demuestra cómo utilizar la función CalculateFields en el modo inmediato con el tipo de expresión Arcade.

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"
arcpy.management.CalculateFields(
    "parcels", "ARCADE", 
    [["max_value", "Max($feature.field1, $feature.field2)"], 
     ["min_value", "Min($feature.field1, $feature.field2)"]])