Подпись | Описание | Тип данных |
Целевые объекты | Атрибуты целевых объектов, к которым присоединяются атрибуты присоединяемых объектов и которые будут перенесены в выходной класс объектов. Однако часть атрибутов может быть задана параметром Список полей. | Feature Layer |
Присоединяемые объекты | Атрибуты, которые будут присоединены к объектам целевого класса. Дополнительные сведения о том, как тип операции соединения влияет на объединение присоединяемых атрибутов, см в описании параметра Операции соединения. | Feature Layer |
Выходной класс пространственных объектов | Новый класс пространственных объектов, содержащий атрибуты целевых и присоединяемых объектов. По умолчанию все атрибуты целевых и присоединяемых объектов будут записаны в целевой класс объектов. Однако набор переносимых атрибутов может быть задан параметром Список полей. | Feature Class |
Операция соединения (Дополнительный) | Операция, которая соединит целевые и присоединяемые объекты в выходном классе объектов, если найдено несколько присоединяемых объектов с тем же пространственным отношением с одним целевым объектом.
| String |
Сохранить все целевые объекты (Дополнительный) | Указывает, будут ли сохранены все целевые объекты в выходном классе объектов (внешнее соединение) или только имеющие заданное пространственное отношение с присоединяемыми объектами (внутреннее соединение).
| Boolean |
Список полей (Дополнительный) | Поля, которые будут включены в выходной набор данных с соответствующими свойствами и исходными полями. По умолчанию выходные данные включают все поля из присоединяемых и целевых объектов. Используйте список полей для добавления, удаления, переименования и изменения порядка полей, а также для изменения других свойств полей. Список полей также может использоваться для объединения значений из двух или более входных полей в одно выходное. | Field Mappings |
Опции сопоставления (Дополнительный) | Определяет критерии для сопоставления строк.
| String |
Радиус поиска (Дополнительный) | Расстояние от целевого объекта, в пределах которого присоединяемые объекты будут учитываться для пространственного соединения. Радиус поиска допустим только в том случае, если задано пространственное отношение (параметр Опция сопоставления задан как Пересекает, В пределах расстояния, В пределах геодезического расстояния, Имеет центр в, Ближайший или Ближайший геодезически). Например, при радиусе поиска в 100 метров с пространственным отношением В пределах расстояния будут присоединяться объекты, расположенные в пределах 100 метров от целевого объекта. Для трех отношений в пределах расстояния, если значение Радиуса поиска не задано, используется расстояние 0. | Linear Unit |
Имя поля расстояния (Дополнительный) | Имя поля, содержащего расстояние между целевым объектом и ближайшим к нему присоединяемым объектом. Это поле будет добавлено в выходной класс объектов. Этот параметр является допустимым, только если задано пространственное отношение (Опция сопоставления) Ближайший или Ближайший геодезически. Значения в этом поле равно -1, если в пределах радиуса поиска не найдено подходящего объекта. Если имя поля не указано, поле не будет добавлено в выходной класс объектов. | String |
Сопоставление полей (Дополнительный) | Пары полей из присоединяемых объектов и целевых объектов, которые будут использоваться для сопоставления атрибутов. В пространственном соединении будут участвовать только те записи из присоединяемых объектов, у которых будут общие с целевыми объектами значения сопоставляемых полей. | Value Table |
Краткая информация
Присоединяет атрибуты из одного объекта к другому на основании пространственного взаиморасположения. В выходной класс объектов записываются целевые объекты (исходного класса) с присоединенными атрибутами из другого класса.
Узнайте больше об отношениях пространственного соединения по типу пространственного объекта
Использование
Пространственное соединение сопоставляет значения в строках Присоединяемых объектов со значениями в строках Целевых объектов на основе их пространственного расположения относительно друг друга.
По умолчанию все атрибуты присоединяемых объектов присоединяются к атрибутам целевых объектов и копируются в выходной класс объектов. Вы можете указать, какие атрибуты будут записываться в выходные данные, используя параметр Список полей.
Два новых поля, Join_Count и TARGET_FID, будут добавлены к выходному классу объектов. Поле Join_Count содержит количество присоединяемых объектов, соответствующих каждому целевому объекту (TARGET_FID).
Кроме того, в выходные данные добавляется новое поле JOIN_FID, если для параметра Операция соединения указано значение Один-ко-многим.
Если для параметра Операции соединения указано значение Один-ко-многим, в выходном классе пространственных объектов может быть несколько строк для каждого целевого объекта. Воспользуйтесь полем JOIN_FID для определения того, к какому целевому объекту (TARGET_FID) присоединяется тот или иной объект. Значение -1 в поле JOIN_FID означает, что ни один объект не соответствует заданному пространственному отношению с целевым объектом.
Все целевые объекты исходного класса будут сохранены в выходном классе объектов, если выполняются два следующих условия:
- Для параметра Операция соединения задано Один-к-одному.
- Стоит отметка Сохранить все целевые объекты.
Для постоянного переноса полей в целевой класс объектов используйте инструмент Добавить пространственное соединение с отмеченным параметром Окончательно присоединить поля.
Используйте параметр Список полей для управления полями и их содержанием в входных наборах данных.
- Добавляйте и удаляйте поля из списка полей, изменяйте порядок и переименовывайте поля.
- Тип данных по умолчанию для выходного поля будет таким же, как тип данных первого входного поля (того имени), с которым он сталкивается. Вы можете изменить тип данных на другой допустимый тип.
- Используйте действие, чтобы определить, как значения из одного или нескольких входных полей будут объединены в одно выходное поле. Доступны следующие действия: Первое, Последнее, Соединить, Сумма, Среднее, Медиана, Режим, Минимум, Максимум, Стандартное отклонение и Число.
- При использовании действия Соединить, вы можете задать разделитель, например, точку или другой символ. Щелкните начало текстового поля Разделитель, чтобы добавить символы-разделители.
- Стандартное отклонение не является допустимым параметром для одиночных входных значений.
- Используйте кнопку Фрагмент текста в исходных текстовых полях, чтобы выбрать, какие символы из входного значения будут извлечены в поле вывода. Чтобы получить доступ к кнопке Фрагмент текста, наведите курсор на текстовое поле в списке входных полей, затем укажите начальную и конечную позиции символов.
- Поля также можно сопоставить, используя скрипты Python.
Действия, определяемые с помощью параметра Список полей, применяются только к атрибутам присоединяемых объектов, если более одного объекта соответствует целевому объекту (если Join_Count > 1). Например, если к одному целевому объекту присоединяются три объекта со значениями атрибута DEPTH 15.5, 2.5 и 3.3, и используется действие Среднее, в выходное атрибутивное поле будет записано значение 6.1. При статистическом расчете нулевые значения в соединяемых полях игнорируются. Например, для значений 15.5, значения null и 2.5 результатом будет 9.0 для Среднего и 2 для Количества.
Если параметр Опции сопоставления настроен как Ближайший или Геодезически ближайший, то как минимум два присоединяемых объекта находятся на одинаковом расстоянии от целевого объекта. В этом случае присоединен будет только один объект, выбираемый случайным образом (Object ID присоединяемого объекта на выбор не влияет). Чтобы найти 2-й, 3-й или n-й ближайший объект, используйте инструмент Построить таблицу соседних объектов.
Если присоединяемый объект имеет пространственное отношение с несколькими целевыми объектами, он будет учитываться столько раз, сколько он был сопоставлен с целевым объектом. Например, если точка находится внутри трех полигонов, она будет подсчитана три раза, по одному разу для каждого полигона.
Параметр Сопоставление атрибутов отфильтровывает объекты, которым будут соответствовать пространственные отношения, указанные в параметре Опции сопоставления. Укажите поля из присоединяемых и целевых объектов, у которых, в дополнение к их пространственному отношению, должны быть сопоставленные атрибуты.
Более подробно об использовании пространственных отношений Пересечение 3D и В пределах расстояния 3D см. в разделе Выбор трехмерных отношений по расположению.
Параметры
arcpy.analysis.SpatialJoin(target_features, join_features, out_feature_class, {join_operation}, {join_type}, {field_mapping}, {match_option}, {search_radius}, {distance_field_name}, {match_fields})
Имя | Описание | Тип данных |
target_features | Атрибуты целевых объектов, к которым присоединяются атрибуты присоединяемых объектов и которые будут перенесены в выходной класс объектов. Однако часть атрибутов может быть задана параметром Список полей. | Feature Layer |
join_features | Атрибуты, которые будут присоединены к объектам целевого класса. Дополнительные сведения о том, как тип операции соединения влияет на объединение присоединяемых атрибутов, см. в описании параметра join_operation. | Feature Layer |
out_feature_class | Новый класс пространственных объектов, содержащий атрибуты целевых и присоединяемых объектов. По умолчанию все атрибуты целевых и присоединяемых объектов будут записаны в целевой класс объектов. Однако набор переносимых атрибутов может быть задан параметром Список полей. | Feature Class |
join_operation (Дополнительный) | Операция, которая соединит целевые и присоединяемые объекты в выходном классе объектов, если найдено несколько присоединяемых объектов с тем же пространственным отношением с одним целевым объектом.
| String |
join_type (Дополнительный) | Указывает, будут ли сохранены все целевые объекты в выходном классе объектов (внешнее соединение) или только имеющие заданное пространственное отношение с присоединяемыми объектами (внутреннее соединение).
| Boolean |
field_mapping (Дополнительный) | Поля, которые будут включены в выходной набор данных с соответствующими свойствами и исходными полями. По умолчанию выходные данные включают все поля из присоединяемых и целевых объектов. Используйте список полей для добавления, удаления, переименования и изменения порядка полей, а также для изменения других свойств полей. Список полей также может использоваться для объединения значений из двух или более входных полей в одно выходное. В Python используйте класс FieldMappings для задания этого параметра. | Field Mappings |
match_option (Дополнительный) | Определяет критерии для сопоставления строк.
| String |
search_radius (Дополнительный) | Расстояние от целевого объекта, в пределах которого присоединяемые объекты будут учитываться для пространственного соединения. Радиус поиска является корректным, только если задано пространственное отношение (для параметра match_option задано INTERSECT, WITHIN_A_DISTANCE, WITHIN_A_DISTANCE_GEODESIC, HAVE_THEIR_CENTER_IN, CLOSEST или CLOSEST_GEODESIC). Например, при радиусе поиска в 100 метров с пространственным отношением WITHIN_A_DISTANCE будут присоединяться объекты, расположенные в пределах 100 метров от целевого объекта. Для трех отношений в пределах расстояния, если значение для search_radius не задано, используется расстояние 0. | Linear Unit |
distance_field_name (Дополнительный) | Имя поля, содержащего расстояние между целевым объектом и ближайшим к нему присоединяемым объектом. Это поле будет добавлено в выходной класс объектов. Этот параметр допустим только в случае, когда задано пространственное отношение (для match_option задано CLOSEST или CLOSEST_GEODESIC). Значения в этом поле равно -1, если в пределах радиуса поиска не найдено подходящего объекта. Если имя поля не указано, поле не будет добавлено в выходной класс объектов. | String |
match_fields [[join_field, target_field],...] (Дополнительный) | Пары полей из присоединяемых объектов и целевых объектов, которые будут использоваться для сопоставления атрибутов. В пространственном соединении будут участвовать только те записи из присоединяемых объектов, у которых будут общие с целевыми объектами значения сопоставляемых полей. | Value Table |
Пример кода
Следующий скрипт демонстрирует использование функции SpatialJoin в окне Python.
import arcpy
target_features = "C:/data/usa.gdb/states"
join_features = "C:/data/usa.gdb/cities"
out_feature_class = "C:/data/usa.gdb/states_cities"
arcpy.analysis.SpatialJoin(target_features, join_features, out_feature_class)
Этот автономный скрипт демонстрирует пример использования функции SpatialJoin для присоединения атрибутов городов к штатам.
# Name: SpatialJoin_Example2.py
# Description: Join attributes of cities to states based on spatial relationships.
# Import system modules
import arcpy
import os
# Set local variables
workspace = r"C:\gpqa\mytools\spatialjoin\usa.gdb"
outWorkspace = r"C:\gpqa\mytools\spatialjoin\output.gdb"
# Want to join USA cities to states and calculate the mean city population
# for each state
targetFeatures = os.path.join(workspace, "states")
joinFeatures = os.path.join(workspace, "cities")
# Output will be the target features, states, with a mean city population field (mcp)
outfc = os.path.join(outWorkspace, "states_mcp2")
# Create a new fieldmappings and add the two input feature classes.
fieldmappings = arcpy.FieldMappings()
fieldmappings.addTable(targetFeatures)
fieldmappings.addTable(joinFeatures)
# First get the POP1990 fieldmap. POP1990 is a field in the cities feature class.
# The output will have the states with the attributes of the cities. Setting the
# field's merge rule to mean will aggregate the values for all of the cities for
# each state into an average value. The field is also renamed to be more appropriate
# for the output.
pop1990FieldIndex = fieldmappings.findFieldMapIndex("POP1990")
fieldmap = fieldmappings.getFieldMap(pop1990FieldIndex)
# Get the output field's properties as a field object
field = fieldmap.outputField
# Rename the field and pass the updated field object back into the field map
field.name = "mean_city_pop"
field.aliasName = "mean_city_pop"
fieldmap.outputField = field
# Set the merge rule to mean and then replace the old fieldmap in the mappings object
# with the updated one
fieldmap.mergeRule = "mean"
fieldmappings.replaceFieldMap(pop1990FieldIndex, fieldmap)
# Delete fields that are no longer applicable, such as city CITY_NAME and CITY_FIPS
# as only the first value will be used by default
x = fieldmappings.findFieldMapIndex("CITY_NAME")
fieldmappings.removeFieldMap(x)
y = fieldmappings.findFieldMapIndex("CITY_FIPS")
fieldmappings.removeFieldMap(y)
#Run the Spatial Join tool, using the defaults for the join operation and join type
arcpy.analysis.SpatialJoin(targetFeatures, joinFeatures, outfc, "#", "#", fieldmappings)
Параметры среды
Информация о лицензиях
- Basic: Да
- Standard: Да
- Advanced: Да