添加字段 (Data Management)
摘要
向表或要素类表、要素图层、栅格目录和/或带属性表的栅格添加新字段。
用法
-
Coverage、独立表、ArcSDE 和个人或文件地理数据库的要素类、图层文件、栅格目录以及 shapefile 均可作为此命令的有效输入。VPF 和 CAD 要素数据叠加将不会起作用,因为它们是只读格式(不是 ArcGIS 的本机格式)。
-
对于 coverage、shapefile 和 dBase 表,如果字段类型定义为字符型,则会为每条记录插入空白行。如果字段类型定义为数值型,则将为每条记录插入零。
-
所添加的字段会始终显示在表的末尾。
-
字段长度仅适用于文本或 blob 类型的字段。
-
对于地理数据库,如果字段类型定义为字符或数字,则在接受字段可为空参数默认值的情况下将 <null> 插入每条记录。
-
shapefile 不支持字段别名,所以无法将字段别名添加到 shapefile。
-
只能将不可为空的字段添加到空地理数据库要素类或表。当行已经存在时,此工具无法添加不可为空的字段。
-
字段属性域参数可使用个人、文件或 SDE 地理数据库要素类的现有属性域。
-
字段的精度和小数位数用于描述可存储于字段中的数据的最大大小和精度。精度描述可存储在字段中的位数,小数位数描述浮点型和双精度字段的小数位数。例如,如果字段值是 54.234,则小数位数 = 3,精度 = 5。
使用以下原则为给定的精度和小数位数选择正确的字段类型:
- 在创建浮点型、双精度或整型字段并将精度和小数位数指定为 0 时,如果基础数据库支持二进制类型字段,则该工具将尝试创建该字段。个人和文件地理数据库仅支持二进制类型字段,并忽略精度和小数位数。
- 在创建浮点型和双精度字段并指定精度和小数位数时,如果精度大于 6,则使用双精度,否则使用浮点型。如果创建双精度字段并指定等于或小于 6 的精度,则创建浮点型字段。如果创建浮点型字段并指定大于 6 的字段,则将创建双精度字段。
- 如果指定的小数位数等于 0,精度等于或小于 10,则会创建整型字段。创建整型字段时,精度应等于或小于 10,否则可能将字段创建为双精度字段。
-
在地理数据库要素类或表中创建新字段时,可指定字段的类型,但无法指定其精度和小数位数。即使对话框允许为精度或小数位数添加值,它在执行期间也会被忽略。
-
必须为字段属性域参数指定现有属性域的名称。输入无效的属性域名称或值不会导致工具失败,但它会被忽略且不会为字段设置属性域。
-
设置为 REQUIRED 的字段具有永久性,在将来的处理中无法将其删除。要在以后允许将其删除,将字段设置为 NON_REQUIRED(默认值)。
-
栅格类型的字段允许将栅格影像作为属性。它存储在地理数据库中或与其一同存储。当图片是描述要素的最佳途径时,这很有用。无法为栅格类型的字段设置精度、小数位数和长度。
语法
参数 | 说明 | 数据类型 |
in_table |
要添加指定字段的输入表。该字段将被添加到现有输入表,并且不会创建新的输出表。 可将字段添加到 ArcSDE 的要素类、文件或个人地理数据库的要素类、coverage、shapefile、栅格目录、独立表、带属性表的栅格和/或图层。 | Mosaic Layer; Raster Catalog Layer; Raster Layer; Table View |
field_name |
要添加到输入表的字段的名称。 | String |
field_type |
在创建新字段时所使用的字段类型。
| String |
field_precision (可选) |
描述可存储在字段中的位数。所有位都将被计算在内,而无论其处于小数点的哪一侧。 如果输入表是个人或文件地理数据库,则将忽略字段精度值。 | Long |
field_scale (可选) |
设置可存储在字段中的小数位数。此参数仅可用于浮点型和双精度数据字段类型。 如果输入表是个人或文件地理数据库,则将忽略字段小数位数值。 | Long |
field_length (可选) |
要添加的字段的长度。它为字段的每条记录设置最大允许字符数。此选项仅适用于文本或 blob 类型的字段。 | Long |
field_alias (可选) |
指定给字段名称的备用名称。此名称用于为含义隐晦的的字段名称指定更具描述性的名称。字段别名参数仅适用于地理数据库和 coverage。 | String |
field_is_nullable (可选) |
不存在关联属性信息的地理要素。它们与零或空字段不同,仅支持地理数据库中的字段。
| Boolean |
field_is_required (可选) |
指定要创建的字段是否是表的必填字段;仅支持地理数据库中的字段。
| Boolean |
field_domain (可选) |
用于约束地理数据库中的表、要素类或子类型的任何特定属性的允许值。必须指定现有属性域的名称才能将其应用于字段。 | String |
代码实例
以下 Python 窗口脚本演示了如何在即时模式下使用 AddField 工具。
import arcpy
from arcpy import env
env.workspace = "C:/data/airport.gdb"
arcpy.AddField_management("schools", "ref_ID", "LONG", 9, "", "", "refcode", "NULLABLE", "REQUIRED")
以下独立脚本演示了如何使用 AddField 工具。
# Name: AddField_Example2.py
# Description: Add a pair of new fields to a table
# Import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data/airport.gdb"
# Set local variables
inFeatures = "schools"
fieldName1 = "ref_ID"
fieldPrecision = 9
fieldAlias = "refcode"
fieldName2 = "status"
fieldLength = 10
# Execute AddField twice for two new fields
arcpy.AddField_management(inFeatures, fieldName1, "LONG", fieldPrecision, "", "",
fieldAlias, "NULLABLE")
arcpy.AddField_management(inFeatures, fieldName2, "TEXT", "", "", fieldLength)