FieldMap

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

Объект 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; свойство нельзя изменить на месте.

Синтаксис

 FieldMap ()

Свойства

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

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

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

Строковое значение, которое будет использоваться для отделения входных значений от той же таблицы, если тип выходного поля – строка и для mergeRule задано значение .Join

String
mergeRule
(чтение и запись)

Определяет способ объединения значений из двух и более полей одной и той же входной таблицы в единственное выходное значение.

  • FirstБудет использовано первое входное значение.
  • LastБудет использовано последнее входное значение.
  • JoinЗначения будут соединены с использованием разделителя (допустимо, только если тип выходного поля текстовый).
  • MinБудет использовано минимальное входное значение (допустимо, только если тип выходного поля числовой).
  • MaxБудет использовано максимальное входное значение (допустимо, только если тип выходного поля числовой).
  • MeanБудет использовано среднее значение, которое рассчитывается на основе входных значений (допустимо, только если тип выходного поля числовой).
  • MedianБудет использовано медианное значение, которое рассчитывается на основе входных значений (допустимо, только если тип выходного поля числовой).
  • SumБудет использована сумма, которая рассчитывается на основе входных значений (допустимо, только если тип выходного поля числовой).
  • StDevБудет использовано среднеквадратическое отклонение, которое рассчитывается на основе входных значений (допустимо, только если тип выходного поля числовой).
  • CountБудет использовано количество значений, включенных в статистические вычисления. Пересчитываются все значения, исключая пустые значения.
String
outputField
(чтение и запись)

Свойства выходного поля либо задаются, либо возвращаются в объекте Field.

Field

Обзор метода

МетодОписание
addInputField (table_dataset, field_name, {start_position}, {end_position})

Добавьте входное поле в список полей.

findInputFieldIndex (table_dataset, field_name)

Находит входное поле из списка полей.

getEndTextPosition (index)

Возвращает позицию конца текста на карте полей.

getInputFieldName (index)

Возвращает имя входного поля из карты полей на основе позиции индекса поля.

getInputTableName (index)

Возвращает имя входной таблицы из карты полей на основе позиции индекса таблицы.

getStartTextPosition (index)

Возвращает начальную текстовую позицию объекта FieldMap.

removeAll ()

Удаляет все значения и создает пустой объект.

removeInputField (index)

Удаляет входное поле из объект FieldMap.

setEndTextPosition (index, end_position)

Задает позицию конца текста для списка полей.

setStartTextPosition (index, start_position)

Задает позицию начала текста для списка полей.

Методы

addInputField (table_dataset, field_name, {start_position}, {end_position})
ПараметрОписаниеТип данных
table_dataset

The table that will be 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 that will be added to the field map.

String
field_name

The field name.

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

Положение индекса имени поля.

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

The index position.

Integer
Возвращаемое значение
Тип данныхОписание
Integer

Позиция конца текста.

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

The index position.

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

Имя входного поля.

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

The index position.

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

Имя входной таблицы.

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

The index position.

Integer
Возвращаемое значение
Тип данныхОписание
Integer

Начальная текстовая позиция.

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 (деревья) и шейп-файл 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 пример 2

В этом примере показано использование объектов 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)

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