FieldMappings
摘要
The FieldMappings object is a collection of FieldMap objects and it is used as the parameter value for tools that perform field mapping such as Merge.
讨论
FieldMappings 对象是一组 FieldMap 对象,它用作执行字段映射的工具的参数值,如 Merge。要处理这些对象,最简单的方法就是先创建 FieldMappings 对象,然后通过添加要组合的输入要素类或表对 FieldMap 对象进行初始化。提供了所有输入后,FieldMappings 对象将为所有输入中的每个唯一字段名提供一个 FieldMap 对象或输出字段。可对此列表进行修改,具体方法有添加新字段、更改输出字段的属性和/或内容,或移除任何不需要的输出字段。
FieldMap 对象的属性包括输入文本值的起始位置和结束位置,因此可以使用一组输入值创建新的输出值。如果 FieldMap 对象包含多个来自同一表或要素类的输入字段,则将使用 mergeRule 属性合并每个记录的值。这样可以方便地连接各个值,例如保存在一个字段中的街道名称以及保存在另一个字段中的街道类型,如 Eureka 和 Street。如果将 mergeRule 的值指定为 Join,则使用 FieldMap 的 joinDelimiter 属性。任何字符集(如空格)都可用作分隔符。在以上示例中,将会创建值 Eureka Street。
语法
属性
属性 | 说明 | 数据类型 |
fieldCount (只读) |
The number of output fields. | Integer |
fieldValidationWorkspace (可读写) |
The workspace type that defines the rules for attribute field naming. These rules are used when determining the output field names, which are based on the names of the input fields. For example, setting the fieldValidationWorkspace property to the path of a folder on disk containing the input shapefiles will result in the output field names being truncated to 10 characters. Setting the fieldValidationWorkspace property to the path of a file geodatabase will allow for much longer field names. The fieldValidationWorkspace property should be set with a consideration for the output format. | String |
fields (只读) |
A Python List that contains a list of field objects. Each field object represents the properties of each output field. | Field |
方法概述
方法 | 说明 |
addFieldMap (field_map) |
Add a field map to the field mappings. |
addTable (table_dataset) |
Adds a table to the field mappings object. |
exportToString () |
Exports the object to its string representation. |
findFieldMapIndex (field_map_name) |
Find a field map within the field mappings by name. |
getFieldMap (index) |
Gets a field map from the field mappings. |
loadFromString (string) |
Restore the object using its string representation. The exportToString method can be used to create a string representation. |
removeAll () |
Removes all values and creates an empty object. |
removeFieldMap (index) |
Removes a field map from the field mappings. |
replaceFieldMap (index, value) |
Replace a field map within the field mappings. |
方法
参数 | 说明 | 数据类型 |
field_map |
The field map to add to the field mappings | FieldMap |
参数 | 说明 | 数据类型 |
table_dataset |
The table to add to the field mappings object. | String |
数据类型 | 说明 |
String |
The string representation of the object. |
参数 | 说明 | 数据类型 |
field_map_name |
Find the field map by name. | String |
数据类型 | 说明 |
Integer |
The index position of the field map. |
参数 | 说明 | 数据类型 |
index |
The index position of the field map. | Integer |
数据类型 | 说明 |
FieldMap |
The field map from the field mappings. |
参数 | 说明 | 数据类型 |
string |
The string representation of the object. | String |
参数 | 说明 | 数据类型 |
index |
The index position of the field map. | Integer |
参数 | 说明 | 数据类型 |
index |
The index position of the field map to be replaced. | Integer |
value |
The replacement field map. | FieldMap |
代码示例
import arcpy from arcpy import env # Input feature classes contain a PID field that is a composite of # the Township, Range, Section, QuarterSection, Block, Lot, and SubLot values. # We need to define how to break the PID field into two fields: TWNSHIP and BLOCK, # then run the Merge tool. # PID field and field map. # 1 1 1 1 1 1 1 # 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 # +-------------------------------+ # |2|0|3|0|8|2|1|0|0|1|0|0|5|0|0|0| # +-------------------------------+ # +---TWNSHIP---+-------BLOCK-----+ infc1 = "C:/Data/NewParcels.shp" infc2 = "Parcels" outfc = "Parcels_Merge" # Create a fieldmappings object and two fieldmap objects # fieldmappings = arcpy.FieldMappings() fldmap_TWNSHIP = arcpy.FieldMap() fldmap_BLOCK = arcpy.FieldMap() # Create a value table to hold names of input feature classes for Merge tool. # vt = arcpy.ValueTable() # Add all fields from first input feature class to fieldmappings object # AddTable is the most efficient way. # fieldmappings.addTable(infc1) # Add the TWNSHIP and BLOCK field from the first input feature class # to fieldmap object. # fldmap_TWNSHIP.addInputField(infc1) fldmap_BLOCK.addInputField(infc1) vt.addRow(infc1) # Add all fields from second input feature class to fieldmappings object # env.workspace = "C:/Data/Boulder.gdb" fieldmappings.addTable(infc2) # Add the TWNSHIP and BLOCK field from the second input feature class # to fieldmap object. # fldmap_TWNSHIP.addInputField(infc2) fldmap_BLOCK.addInputField(infc2) vt.addRow(infc2) # Set the starting and ending positions of the input field in the fieldmap. # This is for TWNSHIP for x in range(0, fldmap_TWNSHIP.inputFieldCount): fldmap_TWNSHIP.setStartTextPosition(x, 0) fldmap_TWNSHIP.setEndFieldPosition(x, 6) # Set the starting and ending positions of the input field in the fieldmap. # This is for BLOCK for x in range(0, fldmap_BLOCK.inputFieldCount): fldmap_BLOCK.setStartTextPosition(x, 7) fldmap_BLOCK.setEndFieldPosition(x, 15) # Get the new field object from fieldmap, set field name, place back in fieldmap. # fld_TWNSHIP = fldmap_TWNSHIP.outputField fld_TWNSHIP.name = "TWNSHIP" fldmap_TWNSHIP.outputField = fld_TWNSHIP fld_BLOCK = fldmap_BLOCK.outputField fld_BLOCK.name = "BLOCK" fldmap_BLOCK.outputField = fld_BLOCK # Add the new fieldmap object to fieldmappings object. fieldmappings.addFieldMap(fldmap_TWNSHIP) fieldmappings.addFieldMap(fldmap_BLOCK) #Run the Merge tool arcpy.Merge_management(vt, outfc, fieldmappings)