Добавить пространственное соединение (Управление данными)

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

Присоединяет атрибуты из одного объекта к другому на основании пространственного взаиморасположения. Будут присоединены целевые объекты и присоединяемые атрибуты из объектов соединения.

Подробнее см. Выбрать по расположению: графические примеры.

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

  • Соединенные атрибуты объединяются и сохраняются в виде отдельной копии. Любые обновления соединенных данных не будут отражены, поскольку они являются статическими. Чтобы обновить данные, удалите соединение и запустите инструмент снова.

  • Инструмент создает следующие поля:

    • Join_Count- сколько присоединяемых объектов соответствуют каждому целевому объекту
    • TARGET_FID- Object ID целевого объекта

  • Инструмент не поддерживает соединение один-ко-многим. Чтобы выполнить соединение один-ко-многим, используйте инструмент Пространственное соединение.

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

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

    • Добавляйте и удаляйте поля из списка полей, изменяйте порядок и переименовывайте поля.
    • Тип данных по умолчанию для выходного поля будет таким же, как тип данных первого входного поля (того имени), с которым он сталкивается. Вы можете изменить тип данных на другой допустимый тип.
    • Используйте действие, чтобы определить, как значения из одного или нескольких входных полей будут объединены в одно выходное поле. Доступны следующие действия: Первое, Последнее, Соединить, Сумма, Среднее, Медиана, Режим, Минимум, Максимум, Стандартное отклонение и Число.
    • При использовании действия Соединить, вы можете задать разделитель, например, точку или другой символ. Щелкните начало текстового поля Разделитель, чтобы добавить символы-разделители.
    • Стандартное отклонение не является допустимым параметром для одиночных входных значений.
    • Используйте кнопку Фрагмент текста в исходных текстовых полях, чтобы выбрать, какие символы из входного значения будут извлечены в поле вывода. Чтобы получить доступ к кнопке Фрагмент текста, наведите курсор на текстовое поле в списке входных полей, затем укажите начальную и конечную позиции символов.
    • Поля также можно сопоставить, используя скрипты 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 см. в разделе Выбор трехмерных отношений по расположению.

Параметры

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

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

Feature Layer
Присоединяемые объекты

Атрибуты, которые будут присоединены к объектам целевого класса. Дополнительные сведения о том, как тип операции соединения влияет на объединение присоединяемых атрибутов, см в описании параметра Операции соединения.

Feature Layer
Операция соединения
(Дополнительный)

Этот параметр скрыт и не поддерживается. Все соединения будут выполнены в режиме один-к-одному.

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

String
Сохранить все целевые объекты
(Дополнительный)

Определяет, будут ли сохранены целевые объекты, у которых есть пространственные отношения с соединяемым объектом (также называется внутренним соединением), либо будут сохранены все целевые объекты, даже если у них нет никаких пространственных отношений с соединяемыми объектами (также называется внешним соединением).

  • Отмечено - будут сохранены все объекты в целевом векторном слое. Это значение по умолчанию
  • Не отмечено - будут сохранены только объекты в целевом векторном слое, у которых есть пространственные отношения с соединяемыми объектами.
Boolean
Список полей
(Дополнительный)

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

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

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

Field Mappings
Опции сопоставления
(Дополнительный)

Определяет критерии для сопоставления строк.

  • ПересечениеПрисоединяемые объекты учитываются, если они пересекают целевые объекты. Это значение по умолчанию Укажите расстояние в параметре Радиус поиска.
  • Пересечение 3DПрисоединяемые объекты учитываются, если они пересекают целевые объекты в трехмерном пространстве (x, y и z). Укажите расстояние в параметре Радиус поиска.
  • В пределах расстоянияПрисоединяемые объекты учитываются, если они находятся в пределах указанного расстояния от целевого объекта. Укажите расстояние в параметре Радиус поиска.
  • В пределах геодезического расстоянияТакое же, как и В пределах расстояния, только используется геодезическое расстояние, а не плоскостное. Расстояние между объектами будет вычислено геодезически, т.е. с учетом кривизны поверхности Земли и корректной обработкой данных, расположенных вокруг линий перемены дат и в приполярных областях. Используйте эту опцию, если ваши данные покрывают большую территорию, или если система координат входных объектов не подходит для вычисления расстояний.
  • В пределах расстояния 3DПрисоединяемые объекты учитываются, если они находятся в пределах указанного расстояния от целевого объекта в трехмерном пространстве. Укажите расстояние в параметре Радиус поиска.
  • СодержитЦелевые объекты должны содержать в своих границах присоединяемые объекты. Целевыми объектами должны быть полигоны или полилинии. Для этой опции целевые объекты не могут быть точками, а присоединяемые объекты могут быть только полигонами, если целевые объекты также являются полигонами.
  • Полностью содержитПрисоединяемые объекты учитываются, если они целиком содержатся в целевом объекте. Полигон может полностью содержать любой объект. Точка не может полностью содержать какой-либо объект, даже точку. Полилиния может полностью содержать только полилинию и точку.
  • Содержит по КлементиниЭто пространственное отношение дает те же результаты, что и Полностью содержит, за исключением ситуаций, когда присоединяемый объект находится целиком на границе целевого объекта (ни одна часть не находится внутри или вне его); в этом случае объект учитываться не будет. Клементини определяет границу полигона, как линию, разделяющую внешнюю и внутреннюю области полигона, границу линии – как её конечную точку, а граница точки всегда является пустой.
  • ВнутриЦелевые объекты должны содержать в своих границах присоединяемые объекты. Это противоположность отношения Содержит. Для этой опции целевые объекты могут быть только полигонами, а присоединяемые объекты – также полигонами. Точка может быть присоединяемым объектом, только если целевым объектом является точка.
  • Полностью в пределахПрисоединяемые объекты учитываются, если целевой объект целиком в них содержится. Это противоположность отношения Полностью содержит.
  • Внутри по КлементиРезультат будет тем же, что и с опцией Within, за исключением ситуаций, когда присоединяемый объект находится целиком на границе целевого объекта; в этом случае объект учитываться не будет. Клементини определяет границу полигона, как линию, разделяющую внешнюю и внутреннюю области полигона, границу линии – как её конечную точку, а граница точки всегда является пустой.
  • ИдентичныПрисоединяемые объекты учитываются, если они идентичны целевому объекту. Присоединяемый и целевой объекты должны иметь один и тот же тип геометрии – точка к точке, линия к линии или полигон к полигону.
  • Касаются границыПрисоединяемые объекты учитываются, если их границы касаются целевого объекта. Если целевые и присоединяемые объекты являются линиями или полигонами, граница присоединяемого объекта может только касаться границы целевого объекта, и ни одна часть присоединяемого объекта не может пересекать границу целевого объекта.
  • Имеют общий линейный сегмент сПрисоединяемые объекты учитываются, если они имеют общий линейный сегмент с целевым объектом. Присоединяемые и целевые объекты должны быть линейными или полигональными.
  • Пересекается границейПрисоединяемые объекты учитываются, если целевой объект пересекается их контуром. Присоединяемые и целевые объекты должны быть линейными или полигональными. Если присоединяемыми и целевыми объектами являются полигоны, используется граница полигона (линия). Будут учитываться линии, пересекающиеся в точке, но не линии с общим линейным сегментом.
  • Имеют центр внутриПрисоединяемые объекты учитываются, если они содержат в своих границах центр целевого объекта. Центр объекта вычисляется следующим образом: для полигонального и мультиточечного объекта используется его геометрический центроид, а для линии используется ее геометрическая середина. Укажите расстояние в параметре Радиус поиска.
  • БлижайшийК целевому объекту присоединяется наиболее близко расположенный у нему присоединяемый объект. Более подробно см. советы по использованию. Укажите расстояние в параметре Радиус поиска.
  • Геодезически ближайшийТакое же, как и Ближайший, только используется геодезическое расстояние, а не плоскостное. Используйте эту опцию, если ваши данные покрывают большую территорию, или если система координат входных объектов не подходит для вычисления расстояний.
  • Наибольшее перекрытиеОбъект в присоединяемых объектах будет сопоставлен с целевым объектом с наибольшим перекрытием.
String
Радиус поиска
(Дополнительный)

Расстояние от целевого объекта, в пределах которого присоединяемые объекты будут учитываться для пространственного соединения. Радиус поиска допустим только в том случае, если задано пространственное отношение (параметр Опция сопоставления задан как Пересекает, В пределах расстояния, В пределах геодезического расстояния, Имеет центр в, Ближайший или Ближайший геодезически). Например, при радиусе поиска в 100 метров с пространственным отношением В пределах расстояния будут присоединяться объекты, расположенные в пределах 100 метров от целевого объекта. Для трех отношений в пределах расстояния, если значение Радиуса поиска не задано, используется расстояние 0.

Linear Unit
Имя поля расстояния
(Дополнительный)

Имя поля, содержащего расстояние между целевым объектом и ближайшим к нему присоединяемым объектом. Поле будет добавлено к соединению. Этот параметр допустим, только если задано пространственное отношение (Опция сопоставления задана как Ближайший или Ближайший геодезически). Значения в этом поле равно -1, если в пределах радиуса поиска не найдено подходящего объекта. Если имя поля не указано, то оно не будет добавлено к соединению.

String
Окончательно присоединить поля
(Дополнительный)

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

  • Не отмечено - поля из присоединяемого класса объектов будут временно добавлены в слой или добавлены в целевой класс объектов через внутреннее соединение. Это значение по умолчанию
  • Отмечено - поля из присоединяемого класса объектов будут добавлены в целевой класс объектов в качестве постоянных.
Boolean
Сопоставление полей
(Дополнительный)

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

Value Table

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

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

Обновленный входной набор данных.

Feature Layer

arcpy.management.AddSpatialJoin(target_features, join_features, {join_operation}, {join_type}, {field_mapping}, {match_option}, {search_radius}, {distance_field_name}, {permanent_join}, {match_fields})
ИмяОписаниеТип данных
target_features

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

Feature Layer
join_features

Атрибуты, которые будут присоединены к объектам целевого класса. Дополнительные сведения о том, как тип операции соединения влияет на объединение присоединяемых атрибутов, см. в описании параметра join_operation.

Feature Layer
join_operation
(Дополнительный)

Этот параметр не поддерживается. Все соединения будут выполнены в режиме один-к-одному. Если вы используете в Python аргументы позиционирования, используйте тип None, пустую строку ("" или '') или ключевое слово JOIN_ONE_TO_ONE.

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

String
join_type
(Дополнительный)

Определяет, будут ли сохранены целевые объекты, у которых есть пространственные отношения с соединяемым объектом (также называется внутренним соединением), либо будут сохранены все целевые объекты, даже если у них нет никаких пространственных отношений с соединяемыми объектами (также называется внешним соединением).

  • KEEP_ALLБудут сохранены все объекты в целевом векторном слое. Это также называется внешним соединением. Это значение по умолчанию
  • KEEP_COMMONБудут сохранены только объекты в целевом векторном слое, у которых есть пространственные отношения с соединяемыми объектами. Это также известно как внутреннее соединение.
Boolean
field_mapping
(Дополнительный)

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

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

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

В Python используйте класс FieldMappings для задания этого параметра.

Field Mappings
match_option
(Дополнительный)

Определяет критерии для сопоставления строк.

  • INTERSECTПрисоединяемые объекты учитываются, если они пересекают целевые объекты. Это значение по умолчанию Укажите расстояние в параметре search_radius.
  • INTERSECT_3DПрисоединяемые объекты учитываются, если они пересекают целевые объекты в трехмерном пространстве (x, y и z). Укажите расстояние в параметре search_radius.
  • WITHIN_A_DISTANCEПрисоединяемые объекты учитываются, если они находятся в пределах указанного расстояния от целевого объекта. Укажите расстояние в параметре search_radius.
  • WITHIN_A_DISTANCE_GEODESICТакое же, как и WITHIN_A_DISTANCE, только используется геодезическое расстояние, а не плоскостное. Расстояние между объектами будет вычислено геодезически, т.е. с учетом кривизны поверхности Земли и корректной обработкой данных, расположенных вокруг линий перемены дат и в приполярных областях. Используйте эту опцию, если ваши данные покрывают большую территорию, или если система координат входных объектов не подходит для вычисления расстояний.
  • WITHIN_A_DISTANCE_3DПрисоединяемые объекты учитываются, если они находятся в пределах указанного расстояния от целевого объекта в трехмерном пространстве. Укажите расстояние в параметре search_radius.
  • CONTAINSЦелевые объекты должны содержать в своих границах присоединяемые объекты. Целевыми объектами должны быть полигоны или полилинии. Для этой опции целевые объекты не могут быть точками, а присоединяемые объекты могут быть только полигонами, если целевые объекты также являются полигонами.
  • COMPLETELY_CONTAINSПрисоединяемые объекты учитываются, если они целиком содержатся в целевом объекте. Полигон может полностью содержать любой объект. Точка не может полностью содержать какой-либо объект, даже точку. Полилиния может полностью содержать только полилинию и точку.
  • CONTAINS_CLEMENTINIЭто пространственное отношение дает те же результаты, что и COMPLETELY_CONTAINS, за исключением ситуаций, когда присоединяемый объект находится целиком на границе целевого объекта (ни одна часть не находится внутри или вне его); в этом случае объект учитываться не будет. Клементини определяет границу полигона, как линию, разделяющую внешнюю и внутреннюю области полигона, границу линии – как её конечную точку, а граница точки всегда является пустой.
  • WITHINЦелевые объекты должны содержать в своих границах присоединяемые объекты. Это противоположность отношения CONTAINS. Для этой опции целевые объекты могут быть только полигонами, а присоединяемые объекты – также полигонами. Точка может быть присоединяемым объектом, только если целевым объектом является точка.
  • COMPLETELY_WITHINПрисоединяемые объекты учитываются, если целевой объект целиком в них содержится. Это противоположность отношения COMPLETELY_CONTAINS.
  • WITHIN_CLEMENTINIРезультат будет тем же, что и с опцией WITHIN, за исключением ситуаций, когда присоединяемый объект находится целиком на границе целевого объекта; в этом случае объект учитываться не будет. Клементини определяет границу полигона, как линию, разделяющую внешнюю и внутреннюю области полигона, границу линии – как её конечную точку, а граница точки всегда является пустой.
  • ARE_IDENTICAL_TOПрисоединяемые объекты учитываются, если они идентичны целевому объекту. Присоединяемый и целевой объекты должны иметь один и тот же тип геометрии – точка к точке, линия к линии или полигон к полигону.
  • BOUNDARY_TOUCHESПрисоединяемые объекты учитываются, если их границы касаются целевого объекта. Если целевые и присоединяемые объекты являются линиями или полигонами, граница присоединяемого объекта может только касаться границы целевого объекта, и ни одна часть присоединяемого объекта не может пересекать границу целевого объекта.
  • SHARE_A_LINE_SEGMENT_WITHПрисоединяемые объекты учитываются, если они имеют общий линейный сегмент с целевым объектом. Присоединяемые и целевые объекты должны быть линейными или полигональными.
  • CROSSED_BY_THE_OUTLINE_OFПрисоединяемые объекты учитываются, если целевой объект пересекается их контуром. Присоединяемые и целевые объекты должны быть линейными или полигональными. Если присоединяемыми и целевыми объектами являются полигоны, используется граница полигона (линия). Будут учитываться линии, пересекающиеся в точке, но не линии с общим линейным сегментом.
  • HAVE_THEIR_CENTER_INПрисоединяемые объекты учитываются, если они содержат в своих границах центр целевого объекта. Центр объекта вычисляется следующим образом: для полигонального и мультиточечного объекта используется его геометрический центроид, а для линии используется ее геометрическая середина. Укажите расстояние в параметре search_radius.
  • CLOSESTК целевому объекту присоединяется наиболее близко расположенный у нему присоединяемый объект. Более подробно см. советы по использованию. Укажите расстояние в параметре search_radius.
  • CLOSEST_GEODESICТакое же, как и CLOSEST, только используется геодезическое расстояние, а не плоскостное. Используйте эту опцию, если ваши данные покрывают большую территорию, или если система координат входных объектов не подходит для вычисления расстояний.
  • LARGEST_OVERLAPОбъект в присоединяемых объектах будет сопоставлен с целевым объектом с наибольшим перекрытием.
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
permanent_join
(Дополнительный)

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

  • NO_PERMANENT_FIELDSПоля из присоединяемого класса объектов будут временно добавлены в слой или добавлены в целевой класс объектов через внутреннее соединение. Это значение по умолчанию
  • PERMANENT_FIELDSПоля из присоединяемого класса объектов будут добавлены в целевой класс объектов в качестве постоянных.
Boolean
match_fields
[[join_field, target_field],...]
(Дополнительный)

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

Value Table

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

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

Обновленный входной набор данных.

Feature Layer

Пример кода

AddSpatialJoin пример 1 (автономный скрипт)

Следующий скрипт Python демонстрирует использование функции AddSpatialJoin в качестве автономного скрипта.

import os
import arcpy
arcpy.env.overwriteOutput = True

# Create hexagons
out_gdb = arcpy.env.scratchGDB
hex_fc = os.path.join(out_gdb, 'out_fc_hex_2')

arcpy.management.GenerateTessellation(
    hex_fc, '-10823285.769168 4836611.80759869 -10781728.9441187 4856999.87422328', 
    'HEXAGON', '17269676,2624 Unknown', arcpy.SpatialReference(3857))

# Create 2 random points in each hexagon
count_pts = 2
pts_fc = arcpy.management.CreateRandomPoints(
    out_gdb, 'out_fc_crp_2', constraining_feature_class=hex_fc, 
    number_of_points_or_field=count_pts)[0]

# Join the point attributes based on points within the hexagons
result = arcpy.management.AddSpatialJoin(
    hex_fc, pts_fc, None, None, 'CID', 'COMPLETELY_CONTAINS')

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