FieldMap (arcpy)

摘要

FieldMap 对象提供一个字段定义和一个输入字段列表,该输入字段列表来自一组表或要素类。

讨论

FieldMappings 对象是一组 FieldMap 对象,它用作执行字段映射的工具的参数值,如 Merge。要处理这些对象,最简单的方法就是先创建 FieldMappings 对象,然后通过添加要组合的输入要素类或表对 FieldMap 对象进行初始化。提供了所有输入后,FieldMappings 对象将为所有输入中的每个唯一字段名提供一个 FieldMap 对象或输出字段。可对此列表进行修改,具体方法有添加新字段、更改输出字段的属性和/或内容,或移除任何不需要的输出字段。

FieldMap 对象的属性包括输入文本值的起始位置和结束位置,因此可以使用一组输入值创建新的输出值。如果 FieldMap 对象包含多个来自同一表或要素类的输入字段,则将使用 mergeRule 属性合并每个记录的值。这样可以方便地连接各个值,例如保存在一个字段中的街道名称以及保存在另一个字段中的街道类型,如 Eureka 和 Street。如果将 mergeRule 的值指定为 Join,则使用 FieldMapjoinDelimiter 属性。任何字符集(如空格)都可用作分隔符。在以上示例中,将会创建值 Eureka Street。

语法

FieldMap ()

属性

属性说明数据类型
inputFieldCount
(只读)

The number of defined input fields.

Integer
joinDelimiter
(读写)

A string value used to separate input values from the same table if the output field type is string and the mergeRule is Join.

String
mergeRule
(读写)

Defines how values from two or more fields from the same input table are merged into a single output value. Valid choices are as follows:

  • FirstThe first input value is used.
  • LastThe last input value is used.
  • JoinMerge the values together using the delimiter value to separate the values (only valid if the output field type is text).
  • MinThe smallest input value is used (only valid if the output field type is numeric).
  • MaxThe largest input value is used (only valid if the output field type is numeric).
  • MeanThe mean is calculated using the input values (only valid if the output field type is numeric).
  • MedianThe median is calculated using the input values (only valid if the output field type is numeric).
  • SumThe sum is calculated using the input values (only valid if the output field type is numeric).
  • StDevThe standard deviation is calculated using the input values (only valid if the output field type is numeric).
  • CountThe number of values included in statistical calculations. This counts each value except null values.
String
outputField
(读写)

The properties of the output field are either set or returned in a Field object.

Field

方法概述

方法说明
addInputField (table_dataset, field_name, {start_position}, {end_position})

Adds input field to the field map.

findInputFieldIndex (table_dataset, field_name)

Finds an input field from the field map.

getEndTextPosition (index)

Gets end text position from the field map.

getInputFieldName (index)

Gets the name of an input field from the field map, based on the field's index.

getInputTableName (index)

Gets the name of an input table from the field map, based on the table's index.

getStartTextPosition (index)

Gets start text position from the field map.

removeAll ()

Removes all values and creates an empty object.

removeInputField (index)

Removes an input field from the field map.

setEndTextPosition (index, end_position)

Sets end text position for the field map.

setStartTextPosition (index, start_position)

Sets the start text position from the field map.

方法

addInputField (table_dataset, field_name, {start_position}, {end_position})
参数说明数据类型
table_dataset

The table added to the field map.

String
field_name

The input field name.

String
start_position

The start position of an input text value.

(默认值为 -1)

Integer
end_position

The end position of an input text value.

(默认值为 -1)

Integer
findInputFieldIndex (table_dataset, field_name)
参数说明数据类型
table_dataset

The table added to the field map.

String
field_name

The field name.

String
返回值
数据类型说明
Integer

The index position of the field name.

getEndTextPosition (index)
参数说明数据类型
index

The index position.

Integer
返回值
数据类型说明
Integer

The end text position.

getInputFieldName (index)
参数说明数据类型
index

The index position.

Integer
返回值
数据类型说明
String

The input field name.

getInputTableName (index)
参数说明数据类型
index

The index position.

Integer
返回值
数据类型说明
String

The input table name.

getStartTextPosition (index)
参数说明数据类型
index

The index position.

Integer
返回值
数据类型说明
Integer

The start text position.

removeAll ()
removeInputField (index)
参数说明数据类型
index

The index position.

Integer
setEndTextPosition (index, end_position)
参数说明数据类型
index

The index position.

Integer
end_position

The end position of an input text value.

Integer
setStartTextPosition (index, start_position)
参数说明数据类型
index

The index position.

Integer
start_position

The start position of an input text value.

Integer

代码实例

FieldMap 示例

当需要将几个相似数据集合并为一个包含所有数据集的数据集时,经常使用 FieldMap 对象。在该示例中,要素类 Trees 和 shapefile Plants.shp 合并至一个要素类:Vegetation。两个初始要素类均有两个属性:类型直径。两个属性都必须通过合并进行维护。

# Import the arcpy module.
import arcpy

# Set the workspace.
arcpy.env.workspace = 'c:/base'

in_file1 = 'data.gdb/Trees'
in_file2 = 'Plants.shp'
output_file = 'data.gdb/Vegetation'

# Create the required FieldMap and FieldMappings objects.
fm_type = arcpy.FieldMap()
fm_diam = arcpy.FieldMap()
fms = arcpy.FieldMappings()

# Get the field names of vegetation type and diameter for both original files.
tree_type = "Tree_Type"
plant_type = "Plant_Type"

tree_diam = "Tree_Diameter"
plant_diam = "Diameter"

# Add fields to their corresponding FieldMap objects.
fm_type.addInputField(in_file1, tree_type)
fm_type.addInputField(in_file2, plant_type)

fm_diam.addInputField(in_file1, tree_diam)
fm_diam.addInputField(in_file2, plant_diam)

# Set the output field properties for both FieldMap objects.
type_name = fm_type.outputField
type_name.name = 'Veg_Type'
fm_type.outputField = type_name

diam_name = fm_diam.outputField
diam_name.name = 'Veg_Diam'
fm_diam.outputField = diam_name

# Add the FieldMap objects to the FieldMappings object.
fms.addFieldMap(fm_type)
fms.addFieldMap(fm_diam)

# Merge the two feature classes.
arcpy.Merge_management([in_file1, in_file2], output_file, fms)
FieldMap 示例 2

该示例使用 FeatureClassToFeatureClass 工具,显示使用 FieldMap 对象合并字段的选项。在该示例中,要素类包含关于一个城市中每个十字路口事故数量的信息。在一个字段中维护各数据年。用户无需更新现有表,就会了解在各十字路口发生事故的平均数量。

# Import the arcpy module
import arcpy

# Set the workspace
arcpy.env.workspace = 'c:/base/data.gdb'

in_file = 'AccidentData'
out_file = 'AverageAccidents'

# Create the necessary FieldMap and FieldMappings objects.
fm = arcpy.FieldMap()
fm1 = arcpy.FieldMap()
fms = arcpy.FieldMappings()

# Each field with accident data begins with 'Yr' (from Yr2007 to Yr2012).
#   The next step loops through each of the fields beginning with 'Yr', and adds
#   them to the FieldMap Object.
for f in arcpy.ListFields(in_file, 'Yr*'):
    fm.addInputField(in_file, f.name)

# Set the merge rule to find the mean value of all fields in the FieldMap object.
fm.mergeRule = 'Mean'

# Set properties of the output name.
f_name = fm.outputField
f_name.name = 'AvgAccidents'
f_name.aliasName = 'AvgAccidents'
fm.outputField = f_name

# Add the intersection field to the second FieldMap object.
fm1.addInputField(in_file, "Intersection")

# Add both FieldMaps to the FieldMappings Object
fms.addFieldMap(fm)
fms.addFieldMap(fm1)

# Create the output feature class, using the FieldMappings object.
arcpy.FeatureClassToFeatureClass_conversion(in_file, arcpy.env.workspace,
                                            out_file, "", fms)

相关主题

9/15/2013