FieldMappings

Краткая информация

Объект FieldMappings представляет собой набор объектов FieldMap и используется как значение параметра для инструментов, выполняющих сопоставление полей; к таким инструментам относится, в частности, инструмент Слияние.

Обсуждение

Свойства объекта FieldMap включают начальное и конечное положения входного текстового значения, поэтому выходное значение можно создать с использованием лишь части входного значения. Если объект FieldMap содержит несколько входных полей из одной таблицы или класса объектов, то значения каждой записи объединяются с помощью свойства mergeRule. Этот способ удобен для объединения таких значений, как название улицы из одного поля и тип улицы из другого поля, например: Eureka и Street. Свойство joinDelimiter для FieldMap применяется, если для mergeRule задано значение Join. Любой набор символов, например, пробел, можно использовать в качестве разделителя. В приведенном выше примере, таким образом, будет создано значение Eureka Street.

Объект FieldMappings представляет собой набор объектов FieldMap и используется как значение параметра для инструментов, выполняющих сопоставление полей; к таким инструментам относится, в частности, инструмент Слияние. Проще всего с этими объектами работать следующим образом — сначала создать объект FieldMappings, а затем инициализировать его объекты FieldMap посредством добавления входных классов объектов или таблиц, которые необходимо с ним соединить. Когда будут заданы все входные данные, объект FieldMappings будет содержать один объект FieldMap или выходное поле для каждого уникального имени поля из всех входных данных. Этот список можно изменять, добавляя в него новые поля, изменяя свойства или содержимое выходного поля или удаляя из него ненужные выходные поля.

Синтаксис

 FieldMappings  ()

Свойства

СвойствоОписаниеТип данных
fieldCount
(только чтение)

Число выходных полей.

Integer
fieldMappings
(чтение и запись)

Список объектов FieldMap, формирующих объект FieldMappings.

FieldMap
fieldValidationWorkspace
(чтение и запись)

Тип рабочей области, который определяет правила именования полей атрибутов. Эти правила применяются при определении имен выходных полей, которые создаются на основе имен входных полей. Например, если задать в свойстве fieldValidationWorkspace путь к папке на диске с входными шейп-файлами, имена выходных полей будут усечены до 10 символов. Если задать в свойстве fieldValidationWorkspace путь к файловой базе геоданных, допускаются более длинные имена. Свойство fieldValidationWorkspace следует задавать с учетом формата выходных данных.

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

Список полей, который будет добавлен к спискам полей.

FieldMap
addTable (table_dataset)
ПараметрОписаниеТип данных
table_dataset

Таблица, которая будет добавлена к объекту соответствий полей.

String
exportToString ()
Возвращаемое значение
Тип данныхОписание
String

Строковое представление объекта.

findFieldMapIndex (field_map_name)
ПараметрОписаниеТип данных
field_map_name

Поиск списка полей по имени.

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.

import arcpy

fieldmappings_string = 'REGION "Region" true true false 21 Text -1 -1,First,#,c:\\data\\fgdb.gdb\\north_america,REGION,-1,-1,c:\\data\\fgdb.gdb\\south_america,REGION2,-1,-1'

fieldmappings = arcpy.FieldMappings()
fieldmappings.loadFromString(fieldmappings_string)

The first nine values in the string define an output field and are space delimited.

  • The name of the output field.
  • The alias of the output field.
  • Whether the output field is editable (true or false).
  • Whether the output field supports nulls (true or false).
  • Whether the output field is required (true or false).
  • The length of the output field (text fields only).
  • The field type of the output field.
  • The precision of the output field (float and double fields only).
  • The scale of the output field (float and double fields only).

The remaining values define the field map characteristics and are comma delimited.

  • The field map merge rule.
  • The concatenator to join values.
  • The path to the input table.
  • The field name from the input table.
  • The start position of an input text value.
  • The end position of an input text value.

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.

import arcpy

fieldmappings_string = 'REGION "Region" true true false 21 Text -1 -1,First,#,c:\\data\\fgdb.gdb\\north_america,REGION,-1,-1,c:\\data\\fgdb.gdb\\south_america,REGION2,-1,-1;CAPITAL "Capital" true true false 21 Text -1 -1,First,#,c:\\data\\fgdb.gdb\\north_america,CAPITAL,-1,-1,c:\\data\\fgdb.gdb\\south_america,CAPITAL2,-1,-1'

fieldmappings = arcpy.FieldMappings()
fieldmappings.loadFromString(fieldmappings_string)
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

Пример кода

FieldMappings пример

Объекты FieldMap часто используются, когда требуется соединить наборы со схожими данными в один полный набор. В этом примере класс пространственных объектов Trees (деревья) и шейп-файл Plants.shp (растения) соединяются в один класс пространственных объектов Vegetation (растительность). Атрибутами обоих исходных классов пространственных объектов являются: Тип (Type) и Диаметр (Diameter). В результате соединения оба эти атрибута должны быть сохранены.

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)
FieldMappings пример 2

В данном примере иллюстрируется вариант использования объектов FieldMap для объединения полей с помощью инструмента FeatureClassToFeatureClass. В этом примере класс объектов содержит информацию о количестве дорожных происшествий в городе в расчете на один перекресток. Каждый год данные сохраняются в одном поле. Пользователю требуется найти среднее количество происшествий на каждом перекрестке, не изменяя имеющейся таблицы.

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 field in arcpy.ListFields(in_file, 'Yr*'):
    fm.addInputField(in_file, field.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, field_mapping=fms)

Связанные разделы