计算字段(多个) (数据管理)

摘要

为要素类、要素图层或栅格计算两个或更多个字段的值。

使用情况

  • 要了解有关 Python 表达式的详细信息,请参阅计算 Python 字段示例

    要了解有关 Arcade 表达式的详细信息,请参阅 ArcGIS Arcade 指南

    要了解有关 SQL 表达式的详细信息,请参阅计算字段值

  • 使用所选要素集(如从创建要素图层按属性选择图层工具内的查询中创建的要素集)时,此工具将只更新所选的记录。

  • 现有字段值将被覆盖。 如果想要保留原始字段值,请创建输入表副本。

  • 对于 Python 计算,必须在字段名称两边添加惊叹号(例如,!fieldname!)。

    对于 Arcade 计算,字段名称必须以 $feature. 为前缀(例如,$feature.fieldname)。

  • 计算文本或字符字段的字符串时,在对话框中,字符串必须使用双引号("字符串"),而在脚本中,还必须对使用双引号的字符串两边添加单引号(例如,'"string"')。

  • 要计算数值字段,可在表达式参数中输入数值;值的两旁无引号。

  • 代码块参数可用于创建复杂表达式。 您可以在对话框中直接输入代码块,或在脚本中将代码块作为连续字符串输入。 表达式与代码块会相互连接。 代码块必须返回与表达式的关联;代码块的结果必须传入到表达式中。

    只有 Python 表达式支持代码块参数。

  • 您可以在代码块参数中使用 Python math 模块及格式。 您还可以导入附加模块。 math 模块可提供数论函数与表达函数、幂函数与对数函数、三角函数、角度转换函数、双曲函数以及数学常数。 要了解更多有关 math 模块的内容,请参阅 Python 帮助。

  • 可使用 typeextentcentroidfirstPointlastPointarealengthisMultipartpartCountGeometry 对象中的属性来创建 Python 表达式(例如 !shape.area!)。

  • Python 表达式可以将几何的 arealength 属性与面积或线性单位结合使用,从而将值转换为不同的测量单位(如 !shape.length@kilometers!)。 如果数据存储在地理坐标系中且具有线性单位(例如英里),则使用测地线算法计算长度。 在地理数据中使用面积单位会产生不正确的结果,这是因为沿地球面的十进制度数并不一致。

    • 面积测量单位关键字如下所示:
      • ACRES | ARES | HECTARES | SQUARECENTIMETERS | SQUAREDECIMETERS | SQUAREINCHES | SQUAREFEET | SQUAREKILOMETERS | SQUAREMETERS | SQUAREMILES | SQUAREMILLIMETERS | SQUAREYARDS | SQUAREMAPUNITS | UNKNOWN
    • 线性测量单位关键字如下所示:
      • CENTIMETERS | DECIMALDEGREES | DECIMETERS | FEET | INCHES | KILOMETERS | METERS | MILES | MILLIMETERS | NAUTICALMILES | POINTS | UNKNOWN | YARDS
  • 通过结合使用 geodesicAreageodesicLength 属性与面积或线性测量单位,Python 表达式可用于计算要素的测地线面积或长度(如 !shape.geodesicArea@hectares!!shape.geodesicLength@miles!)。

  • 计算连接数据时,您无法直接计算连接列。 然而,您可以直接计算源表的列。 要计算连接数据,请先将连接表或连接图层添加至地图。 然后可以分别对此数据执行计算。 这些更改将反映在连接列中。

  • 如果 Python 表达式尝试串联含有空值或者除数为零值的字符串字段,则会为该字段值返回空值。

  • SQL 表达式可用于加快要素服务和企业级地理数据库的计算速度。 使用该表达式可以将单次请求设置为服务器或数据库,而不必一次执行一个要素或一行的计算,从而提高计算速度。

    仅要素服务和企业级地理数据库支持 SQL 表达式。 对于其他格式,请使用 PythonArcade 表达式。

    使用表达式类型参数的 SQL 选项对企业级地理数据库设置以下限制:

    • 此选项仅在 Db2OraclePostgreSQLSAP HANASQL Server 数据集中受支持。
    • 不支持在连接表上计算字段值。
    • 版本ed data is not supported.
    • 不支持撤消地理处理操作功能。

    有关 SQL 表达式的帮助,请参阅数据库供应商文档。

参数

标注说明数据类型
输入表

包含将通过新的计算进行更新的字段的表。

Table View; Raster Layer; Mosaic Layer
表达式类型

指定要使用的表达式类型。

要了解有关 Python 表达式的详细信息,请参阅计算 Python 字段示例

要了解有关 Arcade 表达式的详细信息,请参阅 ArcGIS Arcade 指南

要了解有关 SQL 表达式的详细信息,请参阅计算字段值

  • Python 3将使用 Python 表达式类型。 这是默认设置。
  • Arcade将使用 Arcade 表达式类型。
  • SQL将使用 SQL 表达式类型。
String
字段

要计算的字段及其表达式。

Value Table
代码块
(可选)

将用于复杂表达式的代码块。

此函数不能用于返回多个值。

String
强制域
(可选)

指定是否强制执行字段属性域规则。

  • 选中 - 将强制执行字段属性域规则。 如果无法更新字段,则字段值将保持不变,并且工具消息中将包含警告消息。
  • 未选中 - 不强制执行字段属性域规则。 这是默认设置
Boolean

派生输出

标注说明数据类型
输出表

已更新的表。

Table View; Raster Layer; Mosaic Layer

arcpy.management.CalculateFields(in_table, expression_type, fields, {code_block}, {enforce_domains})
名称说明数据类型
in_table

包含将通过新的计算进行更新的字段的表。

Table View; Raster Layer; Mosaic Layer
expression_type

指定要使用的表达式类型。

  • PYTHON3将使用 Python 表达式类型。 这是默认设置。
  • ARCADE将使用 Arcade 表达式类型。
  • SQL将使用 SQL 表达式类型。

要了解有关 Python 表达式的详细信息,请参阅计算 Python 字段示例

要了解有关 Arcade 表达式的详细信息,请参阅 ArcGIS Arcade 指南

要了解有关 SQL 表达式的详细信息,请参阅计算字段值

String
fields
[[Field Name, Expression],...]

要计算的字段及其表达式。

Value Table
code_block
(可选)

将用于复杂表达式的代码块。

此函数不能用于返回多个值。

String
enforce_domains
(可选)

指定是否强制执行字段属性域规则。

  • ENFORCE_DOMAINS将强制执行字段属性域规则。
  • NO_ENFORCE_DOMAINS不强制执行字段属性域规则。 这是默认设置。
Boolean

派生输出

名称说明数据类型
out_table

已更新的表。

Table View; Raster Layer; Mosaic Layer

代码示例

CalculateFields 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下通过 Python 表达式类型使用 CalculateFields 函数。

import arcpy
arcpy.env.workspace = "C:/data/airport.gdb"
arcpy.CalculateFields_management("parcels", "PYTHON3", 
                                 [["xCentroid", "!SHAPE.CENTROID.X!"], 
                                  ["yCentroid", "!SHAPE.CENTROID.Y!"]])
CalculateFields 示例 2(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下通过 SQL 表达式类型使用 CalculateFields 函数。

import arcpy
arcpy.CalculateFields_management("<a feature service url>", "SQL", 
                                 [["ceiling_field", "CEILING(field1)"], 
                                  ["floor_field", "FLOOR(field1)"]])
CalculateFields 示例 3(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下通过 Arcade 表达式类型使用 CalculateFields 函数。

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

环境

特殊情况

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题