Краткая информация
Объект FieldMappings представляет собой совокупность объектов FieldMap. Используйте объект в качестве значения параметра для инструментов, выполняющих сопоставление полей, таких как инструмент Слияние.
Обсуждение
Свойства объекта FieldMap включают начальное и конечное положения входного текстового значения, поэтому выходное значение можно создать с использованием лишь части входного значения. Если объект FieldMap содержит несколько входных полей из одной таблицы или класса объектов, то значения каждой записи объединяются с помощью свойства mergeRule. Этот способ удобен для объединения таких значений, как название улицы из одного поля и тип улицы из другого поля, например: Eureka и Street. Свойство joinDelimiter объекта FieldMap используется, если Join задано в качестве значения mergeRule. В качестве разделителя можно использовать любой набор символов, включая пробел. В примере, приведенном выше, будет создано значение Eureka Street.
Объект FieldMappings представляет собой набор объектов FieldMap и используется как значение параметра для инструментов, выполняющих сопоставление полей; к таким инструментам относится, в частности, инструмент Слияние. Самый простой способ работы с этими объектами — сначала создать объект FieldMappings, а затем инициализировать его объекты FieldMap, добавив входные классы объектов или таблиц, которые необходимо объединить. Когда будут заданы все входные данные, объект FieldMappings будет содержать один объект FieldMap или выходное поле для каждого уникального имени поля из всех входных данных. Измените этот список, добавив новые поля или удалив ненужные выходные поля. Чтобы изменить свойство outputField объекта FieldMap, присвойте это свойство переменной. Затем измените свойства переменной, такие как name и type, и переназначьте свойство outputField этой переменной.
Примечание:
Используйте этот подход для изменения свойств outputField объекта FieldMap; свойство нельзя изменить на месте.
Синтаксис
FieldMappings ()
Свойства
| Свойство | Описание | Тип данных |
| fieldCount (только чтение) | Число выходных полей. | Integer |
| fieldMappings (чтение и запись) | Список объектов FieldMap, которые составляют объект FieldMappings. | FieldMap |
| fieldValidationWorkspace (чтение и запись) | Тип рабочей области, который определяет правила именования полей атрибутов. Эти правила применяются при определении имен выходных полей, которые создаются на основе имен входных полей. Например, если задать в свойстве путь к папке на диске с входными шейп-файлами, имена выходных полей будут усечены до 10 символов. Если задать в свойстве путь к файловой базе геоданных, допускаются более длинные имена. Учитывайте формат выходных данных при установке этого свойства. | String |
| fields (только чтение) | Список объектов Field. Каждый объект поля представляет свойства каждого выходного поля. | Field |
Обзор метода
| Метод | Описание |
| addFieldMap (field_map) | Добавьте список полей к сопоставлениям полей. |
| addTable (table_dataset) | Добавьте таблицу к объекту сопоставления полей. |
| exportToString () | Экспортирует объект в его строковое представление. |
| findFieldMapIndex (field_map_name) | Находит список полей среди сопоставлений полей по имени. |
| getFieldMap (index) | Возвращает объект FieldMap из объекта FieldMappings по позиции индекса. |
| loadFromString (string) | Определяет объект FieldMappings из отформатированной строки. |
| removeAll () | Удаляет все значения и создает пустой объект. |
| removeFieldMap (index) | Удаляет объект FieldMap из объекта FieldMappings. |
| replaceFieldMap (index, value) | Замените объект FieldMap внутри объекта FieldMappings. |
Методы
addFieldMap (field_map)
| Параметр | Описание | Тип данных |
field_map | The field map that will be added to the field mappings. | FieldMap |
addTable (table_dataset)
| Параметр | Описание | Тип данных |
table_dataset | The table that will be added to the field mappings object. | String |
exportToString ()
| Тип данных | Описание |
| String | Строковое представление объекта. |
findFieldMapIndex (field_map_name)
| Параметр | Описание | Тип данных |
field_map_name | The name of the field map. | String |
| Тип данных | Описание |
| Integer | Позиция индекса списка полей. |
getFieldMap (index)
| Параметр | Описание | Тип данных |
index | The index position of the FieldMap object. | Integer |
| Тип данных | Описание |
| FieldMap | Объект FieldMap из объекта FieldMappings. |
loadFromString (string)
| Параметр | Описание | Тип данных |
string | The string representation of the object. In addition to FieldMappings and FieldMap methods and properties, you can also construct a FieldMappings object from a formatted string. The following example shows the creation of a FieldMappings object that could be used with the Merge tool. The first nine values in the string define an output field and are space delimited.
The remaining values define the field map characteristics and are comma delimited.
Any number of input fields can be mapped to the output field, not only two, as implied in the example. Include the merge rule and concatenator once, and include the dataset path, field name, and start position and end position for each input field. Enclose any values with spaces, such as the field alias or concatenator, in quotation marks. To skip a value, use a # for string values, and -1 for numeric values. As shown in the following example, use a semicolon delimiter to separate multiple output fields. | String |
removeAll ()
removeFieldMap (index)
| Параметр | Описание | Тип данных |
index | The index position of the FieldMap. | Integer |
replaceFieldMap (index, value)
| Параметр | Описание | Тип данных |
index | The index position of the FieldMap object to be replaced. | Integer |
value | The replacement FieldMap object. | FieldMap |
Пример кода
Объекты FieldMap часто используются, когда требуется соединить наборы со схожими данными в один полный набор. В этом примере класс пространственных объектов Trees (деревья) и шейп-файл Plants.shp (растения) соединяются в один класс пространственных объектов Vegetation (растительность). Атрибутами обоих исходных классов пространственных объектов являются: Type и Diameter. В результате соединения оба эти атрибута должны быть сохранены.
import arcpy
# Set the workspace
arcpy.env.workspace = 'c:/base'
in_features_1 = 'data.gdb/Trees'
in_features_2 = 'Plants.shp'
out_features = '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_features_1, tree_type)
fm_type.addInputField(in_features_2, plant_type)
fm_diam.addInputField(in_features_1, tree_diam)
fm_diam.addInputField(in_features_2, plant_diam)
# Set the output field properties for both FieldMap objects by creating a new variable.
type_field = fm_type.outputField
type_field.name = 'Veg_Type'
# Set the new variable back into the field map's outputField.
fm_type.outputField = type_field
diam_field = fm_diam.outputField
diam_field.name = 'Veg_Diam'
fm_diam.outputField = diam_field
# Add the FieldMap objects to the FieldMappings object.
fms.addFieldMap(fm_type)
fms.addFieldMap(fm_diam)
# Merge the two feature classes.
arcpy.management.Merge([in_features_1, in_features_2], out_features, fms)В этом примере показано использование объектов FieldMap для объединения полей с помощью функции ExportFeatures. В этом примере класс объектов содержит информацию о количестве дорожных происшествий в городе в расчете на один перекресток. Каждый год данные сохраняются в одном поле. Пользователю требуется найти среднее количество происшествий на каждом перекрестке, не изменяя имеющейся таблицы.
import arcpy
in_features = r'c:/base/data.gdb/AccidentData'
out_features = r'c:/base/data.gdb/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'.
# The next step loops through each of the fields beginning with 'Yr',
# and adds them to the FieldMap object.
for field in arcpy.ListFields(in_features, 'Yr*'):
fm.addInputField(in_features, field.name)
# Set the merge rule to find the mean value of all fields in the
# FieldMap object.
fm.mergeRule = 'Mean'
# Set the properties of the output field by creating a new variable.
out_field = fm.outputField
out_field.name = 'AvgAccidents'
out_field.aliasName = 'AvgAccidents'
# Set the new variable back into the field map's outputField
fm.outputField = out_field
# Add the intersection field to the second FieldMap object.
fm1.addInputField(in_features, "Intersection")
# Add both FieldMap objects to the FieldMappings object.
fms.addFieldMap(fm)
fms.addFieldMap(fm1)
# Create the output feature class using the FieldMappings object.
arcpy.conversion.ExportFeatures(in_features, out_features, field_mapping=fms)