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

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

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

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

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

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

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

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

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

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

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

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

Информация о лицензиях

  • Basic: Да
  • Standard: Да
  • Advanced: Да

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