Перенос атрибутов (Редактирование)

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

Ищет, где исходные линейные объекты пространственно совпадают с целевыми линейными объектами, и передает выбранные атрибуты от исходных объектов найденным целевым объектам.

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

Иллюстрация

Иллюстрация инструмента Перенос атрибутов

Использование

    Внимание:

    Этот инструмент изменяет входные значения. Более подробно о стратегиях предотвращения нежелательных изменений данных см. в разделе Инструменты, которые изменяют или обновляют входные данные.

    Примечание:

    Все входные данные должны быть в одной системе координат.

  • Объединение входных экстентов используется в качестве экстента обработки. Количество участвующих исходных и целевых объектов будет отображено в сообщениях обработки.

  • Должны быть заданы одно или более полей в параметре Поля для переноса. Если поле переноса имеет то же имя, что и поле из таблицы целевых объектов, к имени поля переноса будет добавлен суффикс _1 (или _2, _3 и т. д.), чтобы сделать его уникальным.

    Если несколько исходных линейных объектов сопоставлены с одним или более целевыми линейными объектами, значения полей только одного из исходных объектов будут переданы целевым объектам. Если значение целевого поля отсутствует, переноса атрибутов не произойдет.

  • Параметр Расстояние поиска используется для поиска кандидатов для сопоставления. Используйте расстояние, достаточное для получения большей части смещений между соответствующими объектами, но недостаточно большое, чтобы вызвать ненужную обработку слишком большого числа кандидатов, что может привести к потенциально неправильным сопоставлениям.

  • Выбирать параметр Выходная таблица сопоставлений необязательно. Данная таблица сопоставлений предоставляет полную информацию сопоставления объектов, включая идентификаторы FID исходных и целевых объектов, группы сопоставления, отношения сопоставления и уровень достоверности сопоставления, полученный из пространственных и атрибутивных условий сопоставления. Эта информация может помочь вам лучше понять ситуации сопоставления и выполнить последующие инспекцию, редактирование и дальнейший анализ. Более подробно см. раздел О соответствии объектов и таблице соответствия.

  • Используйте параметр Поля правил переноса, чтобы устанавливать правила для контроля переноса атрибутов для сопоставления m:n, в котором множество исходных объектов соответствует одному или нескольким целевым объектам. Если правила не заданы, атрибуты будут переноситься из самого длинного из соответствующих исходных объектов. Однако для лучшего управления переносом можно использовать правила на основе атрибутов, каждое из которых определяется именем поля и значением.

    Поддерживаются следующие типы полей и значения правил:

    Тип поляЗначения правил

    Text

    Строковое значение, которое может быть в исходных объектах.

    Integer

    Либо целое значение, которое может быть в исходных объектах, либо MAX или MIN для значения максимума или минимума.

    Date

    MAX или MIN для самой недавней или самой давней даты.

    Вы можете указать, сколько пар поле/значение правила требуется. Все правила будут применяться в порядке их перечисления.

    При обнаружении сопоставления m:n инструмент проверит указанные поля и значения правила и определит, от какого из них переносить атрибуты, следующими способами:

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

    Следующий пример объясняет работу этого процесса. Поле ROAD_NAME должно быть перенесено от источника к цели при совпадении объектов 3:1. По умолчанию для переноса будет использоваться исходный объект 3, являющийся самым длинным из трех исходных объектов, и целевой объект получит в поле ROAD_NAME значение West Ave, как показано ниже в таблице (a).

    Теперь представьте, что заданы следующие правила: поле TRAVEL_DIRECTION с правилом One way и поле SPEED_LIMIT с правилом MAX. Чтобы определить исходный объект для переноса, инструмент первым делом оценит значения в поле TRAVEL_DIRECTION всех трех исходных объектов и найдет два из них, которые соответствуют One way. Далее инструмент проверит значения поля SPEED_LIMIT у этих двух объектов и использует OBJECTID поле 1, которое имеет максимальное значение 40. Это означает, что ROAD_NAME значение поля East Ave перенесено из данного объекта в целевой, как показано ниже в таблице (b).

    Поля правил переноса, пример

  • Точность сопоставления объектов зависит от качества данных, сложности и сходства двух источников данных

    Минимизируйте ошибки данных и выберите подходящие объекты в качестве входных данных во время предварительной обработки. В общих чертах, лучше убедиться, что объекты внутри входного набора данных являются топологически корректными, имеют допустимую геометрию и являются простыми и не содержат дубликатов; в противном случае, могут возникнуть непредвиденные ошибки.

Параметры

ПодписьОписаниеТип данных
Исходные объекты

Линейные объекты, из которых будут перенесены атрибуты.

Feature Layer
Целевые объекты

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

Feature Layer
Поля для переноса

Список исходных полей для переноса к целевым объектам. Должно быть указано хотя бы одно поле.

Field
Расстояние поиска

Расстояние, которое будет использоваться при поиске кандидатов для сопоставления. Расстояние должно быть задано, и оно должно быть больше 0. Вы можете выбрать нужную единицу измерения. По умолчанию используются единицы объектов.

Linear Unit
Сопоставление полей
(Дополнительный)

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

Value Table
Выходная таблица сопоставлений
(Дополнительный)

Выходная таблица, содержащая полную информацию о сопоставлении объектов.

Table
Поля правил переноса
(Дополнительный)

Правило, которое управляет тем, какие исходные объекты будут использоваться для переноса атрибутов, когда множество исходных объектов соответствует целевым объектам. Исходный объект, который будет использоваться для перенесения, определяется указанными полями правил и значениями правил, которые ранжируются по приоритету, от низкого к высокому, по порядку их указания в списке. Если правила не заданы, будет переноситься самый длинный из множества соответствующих исходных объектов.

Доступны следующие типы правил:

  • MIN – Минимальное значение для целочисленного поля или поля даты. Для поля даты используйте самую последнюю дату.
  • MAX – Максимальное значение для целочисленного поля или поля даты. Для поля даты используйте самую старую дату.
  • Текстовое или целочисленное значение, которое может быть в исходных объектах.
Value Table

Производные выходные данные

ПодписьОписаниеТип данных
Обновленные целевые объекты

Обновленные целевые объекты.

Feature Class

arcpy.management.TransferAttributes(source_features, target_features, transfer_fields, search_distance, {match_fields}, {out_match_table}, {transfer_rule_fields})
ИмяОписаниеТип данных
source_features

Линейные объекты, из которых будут перенесены атрибуты.

Feature Layer
target_features

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

Feature Layer
transfer_fields
[field,...]

Список исходных полей для переноса к целевым объектам. Должно быть указано хотя бы одно поле.

Field
search_distance

Расстояние, которое будет использоваться при поиске кандидатов для сопоставления. Расстояние должно быть задано, и оно должно быть больше 0. Вы можете выбрать нужную единицу измерения. По умолчанию используются единицы объектов.

Linear Unit
match_fields
[[source_field, target_field],...]
(Дополнительный)

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

Value Table
out_match_table
(Дополнительный)

Выходная таблица, содержащая полную информацию о сопоставлении объектов.

Table
transfer_rule_fields
[[field, rule],...]
(Дополнительный)

Правило, которое управляет тем, какие исходные объекты будут использоваться для переноса атрибутов, когда множество исходных объектов соответствует целевым объектам. Исходный объект, который будет использоваться для перенесения, определяется указанными полями правил и значениями правил, которые ранжируются по приоритету, от низкого к высокому, по порядку их указания в списке. Если правила не заданы, будет переноситься самый длинный из множества соответствующих исходных объектов.

Доступны следующие типы правил:

  • MIN – Минимальное значение для целочисленного поля или поля даты. Для поля даты используйте самую последнюю дату.
  • MAX – Максимальное значение для целочисленного поля или поля даты. Для поля даты используйте самую старую дату.
  • Текстовое или целочисленное значение, которое может быть в исходных объектах.
Value Table

Производные выходные данные

ИмяОписаниеТип данных
out_feature_class

Обновленные целевые объекты.

Feature Class

Пример кода

TransferAttributes, пример 1 (окно Python)

В следующем скрипте окна Python показано, как используется функция TransferAttributes в режиме прямого запуска.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.edit.TransferAttributes("source_Roads.shp", "target_Roads.shp", 
                              [["RoadName", "PaveType"]], "25 Feet")
TransferAttributes, пример 2 (автономный скрипт)

Следующий автономный скрипт является примером применения функции TransferAttributes в среде скриптов.

"""
Name:        TransferAttributes_example_script2.py
Description: Perform attribute transfer from newly updated roads (source) to existing
             base roads (target). When the source and target features are matched in
             many-to-one or many-to-many (m:n) relationships, attributes are transferred 
             from only one of the m source features to the n target features. This script
             includes a postprocess that flags resulting target features with the m:n
             match relationship. You can inspect the flagged features and retrieve the
             attributes from the desired source features if necessary.
"""

# Import system modules
import arcpy

# Set environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"D:\conflationTools\ScriptExamples\data.gdb"

# Set local variables
sourceFeatures = "updateRoads"
targetFeatures = "baseRoads"
transfer_fields = [["RD_NAME", RD_ID"]]

search_distance = "300 Feet"
match_fields = [["RD_NAME", "FULLNAME"]]

outMatchTable = "ta_mtbl"

# Make a copy of the targetFeatures for attribute transfer
targetCopy = targetFeatures + "_Copy"
arcpy.management.CopyFeatures(targetFeatures, targetCopy)

# Performs attribute transfer
arcpy.edit.TransferAttributes(sourceFeatures, targetCopy, transfer_fields, search_distance, match_fields, outMatchTable)

"""
Note 1:  The result of TransferAttributes may contain errors; see the tool reference.
         Additional analysis steps may be necessary to check the results. These steps
         are not included in this script.

         The following process identifies m:n matches between source and target features 
         and flags features in targetCopy for inspection.
"""

# Add a field srcM_inMN to the match table to store the m count of source features in m:n relationship
field_srcM_inMN = "srcM_inMN"
arcpy.management.AddField(outMatchTable, field_srcM_inMN)

codeblock = """
def getM(fld):
    x = fld.split(\":\")[0]
    if x.isnumeric():
        if int(x) > 0:
            return int(x)
    return -1
"""

# Calculate values for srcM_inMN
arcpy.management.CalculateField(outMatchTable, field_srcM_inMN, "getM(!FM_MN!)", "PYTHON_9.3", codeblock)

# Make a table view of the match table, selecting srcM_inMN values greater than 1 
# (excluding 1:n relationships which don't need to be inspected)
arcpy.management.MakeTableView(outMatchTable, "mtable_view", field_srcM_inMN + "> 1")

# For the selected records, transfer srcM_inMN and SRC_FID fields and values to the targetCopy
arcpy.management.JoinField(targetCopy, "OBJECTID", "mtable_view", "TGT_FID", [["field_srcM_inMN", "SRC_FID"]])

"""
Note 2:  Now the fields srcM_inMN and SRC_FID are in the copy of the target features.
         The srcM_inMN values are the counts of matched source features. The SRC_FID
         values indicate the source feature IDs from which the transferred attributes
         originated.

         You can interactively review the transferred attributes for the
         flagged features. To replace any of them with those from a different
         source feature, make the edits as needed.
"""
TransferAttributes, пример 3 (автономный скрипт)

Данный автономный скрипт представляет собой пример применения функции TransferAttributes с использованием правил переноса в среде скриптов.

"""
Name:        TransferAttributes_example_script3.py
Description: Perform attribute transfer from newly updated roads (source) to
             existing base roads (target). When the source and target
             features are matched in many-to-one or many-to-many (m:n)
             relationships, attributes can be transferred based on transfer
             rules. This script shows how transfer rules are set.
"""

# Import system modules
import arcpy

# Set environment settings
arcpy.env.overwriteOutput = True
arcpy.env.workspace = r"D:\conflationTools\ScriptExamples\data.gdb"

# Set local variables
sourceFeatures = "updateRoads"
targetFeatures = "baseRoads"
transfer_fields = "RD_NAME"

search_distance = "300 Feet"
match_fields = ""
outMatchTable = ""
transfer_rules = [["TRAVEL_DIRECTION", "One-Way"], ["SPEED_LIMIT", "MAX"]]

# Make a copy of the targetFeatures for attribute transfer
targetCopy = targetFeatures + "_Copy"
arcpy.management.CopyFeatures(targetFeatures, targetCopy)

# Perform attribute transfer
arcpy.edit.TransferAttributes(sourceFeatures, targetCopy, transfer_fields,
                              search_distance, match_fields, outMatchTable,
                              transfer_rules)