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

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

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

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

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

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

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

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

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

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

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

    • Чтобы изменить порядок полей, выберите имя поля и перетащите его в новое положение.
    • Тип данных по умолчанию для выходного поля будет таким же, как тип данных первого входного поля (того имени), с которым он сталкивается. Вы можете вручную изменить тип данных в любое время на любой другой допустимый тип данных.
    • Доступны следующие правила слияния: первый, последний, соединение, сумма, среднее, медиана, мода, минимум, максимум, среднеквадратическое отклонение и количество.
    • Используя правило слияния Соединение, вы можете задать собственный разделитель, например, пробел, запятую, точку, тире и т.д. Чтобы использовать пробел, убедитесь, что курсор мыши находится в начале входной строки и щелкните клавишу Пробел один раз.
    • Можно указать начальное и конечное положения текстовых полей, используя опцию формата.
    • Среднеквадратическое отклонение не должно быть использовано для одного входного поля, так как значения нельзя делить на ноль. Поэтому среднеквадратическое отклонение не может применяться для одного входного поля.

    Более подробно о списках полей в скриптах

  • Правила слияния, определяемые с помощью параметра Список полей соединенных объектов, применяются только к атрибутам присоединяемых объектов, если более одного объекта соответствует целевому объекту (если 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Присоединяемые объекты учитываются, если они находятся в пределах указанного расстояния от целевого объекта в трехмерном пространстве. Укажите расстояние с помощью параметра Радиус поиска.
  • СодержатЦелевые объекты должны содержать в своих границах присоединяемые объекты. Целевыми объектами должны быть полигоны или полилинии. Для этой опции целевые объекты не могут быть точками, а присоединяемые объекты могут быть только полигонами, если целевые объекты также являются полигонами.
  • Полностью содержитПрисоединяемые объекты учитываются, если они целиком содержатся в целевом объекте. Полигон может полностью содержать любой объект. Точка не может полностью содержать какой-либо объект, даже точку. Полилиния может полностью содержать только полилинию и точку.
  • Содержит по КлементиниЭто пространственное отношение дает те же результаты, что и Полностью содержит, за исключением ситуаций, когда присоединяемый объект находится целиком на границе целевого объекта (ни одна часть не находится внутри или за пределами); в этом случае объект учитываться не будет. Опция Clementini предполагает, что граница полигона – это линия, отделяющая внутреннюю область полигона от внешней, граница линии – это ее конечные точки, а граница точки всегда является пустой.
  • ВнутриЦелевые объекты должны содержать в своих границах присоединяемые объекты. Это противоположность Contains. Для этой опции целевые объекты могут быть только полигонами, а присоединяемые объекты – также полигонами. Точка может быть присоединяемым объектом, только если целевым объектом является точка.
  • Полностью в пределахПрисоединяемые объекты учитываются, если целевой объект целиком в них содержится. Это противоположность Completely contains.
  • Внутри по КлементиРезультат будет тем же, что и с опцией Within, за исключением ситуаций, когда присоединяемый объект находится целиком на границе целевого объекта; в этом случае объект учитываться не будет. Опция Clementini предполагает, что граница полигона – это линия, отделяющая внутреннюю область полигона от внешней, граница линии – это ее конечные точки, а граница точки всегда является пустой.
  • ИдентичныПрисоединяемые объекты учитываются, если они идентичны целевому объекту. Присоединяемый и целевой объекты должны иметь один и тот же тип геометрии – точка и точка, линия и линия или полигон и полигон.
  • Касаются границыПрисоединяемые объекты учитываются, если их границы касаются целевого объекта. Если целевые и присоединяемые объекты являются линиями или полигонами, граница присоединяемого объекта может только касаться границы целевого объекта, и ни одна часть присоединяемого объекта не может пересекать границу целевого объекта.
  • Имеют общий линейный сегмент сПрисоединяемые объекты учитываются, если они имеют общий линейный сегмент с целевым объектом. Присоединяемые и целевые объекты должны быть линейными или полигональными.
  • Пересекается границейПрисоединяемые объекты учитываются, если целевой объект пересекается их контуром. Присоединяемые и целевые объекты должны быть линейными или полигональными. Если присоединяемыми и целевыми объектами являются полигоны, используется граница полигона (линия). Будут учитываться линии, пересекающиеся в точке, но не линии с общим линейным сегментом.
  • Имеют центр внутриПрисоединяемые объекты учитываются, если они содержат в своих границах центр целевого объекта. Центр объекта вычисляется следующим образом: для полигонального и мультиточечного объекта используется его геометрический центроид, а для линии используется ее геометрическая середина. Укажите расстояние с помощью параметра Радиус поиска.
  • БлижайшийК целевому объекту присоединяется наиболее близко расположенный у нему присоединяемый объект. Более подробно см. советы по использованию. Укажите расстояние с помощью параметра Радиус поиска.
  • Геодезически ближайшийТакое же, как и Ближайший , только используется геодезическое расстояние, а не плоскостное. Выберите, если ваши данные расположены на большой территории или если система координат входных объектов не подходит для вычисления расстояний
  • Наибольшее наложениеОбъект в присоединяемых объектах будет сопоставлен с целевым объектом с наибольшим перекрытием.
String
Радиус поиска
(Дополнительный)

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

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

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

String

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

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

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

Feature Layer

arcpy.management.AddSpatialJoin(target_features, join_features, {join_operation}, {join_type}, {field_mapping}, {match_option}, {search_radius}, {distance_field_name})
ИмяОписаниеТип данных
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, за исключением ситуаций, когда присоединяемый объект находится целиком на границе целевого объекта (ни одна часть не находится внутри или за пределами); в этом случае объект учитываться не будет. Опция Clementini предполагает, что граница полигона – это линия, отделяющая внутреннюю область полигона от внешней, граница линии – это ее конечные точки, а граница точки всегда является пустой.
  • WITHINЦелевые объекты должны содержать в своих границах присоединяемые объекты. Это противоположность к CONTAINS. Для этой опции целевые объекты могут быть только полигонами, а присоединяемые объекты – также полигонами. Точка может быть присоединяемым объектом, только если целевым объектом является точка.
  • COMPLETELY_WITHINПрисоединяемые объекты учитываются, если целевой объект целиком в них содержится. Это противоположность к COMPLETELY_CONTAINS.
  • WITHIN_CLEMENTINIРезультат будет тем же, что и с опцией WITHIN, за исключением ситуаций, когда присоединяемый объект находится целиком на границе целевого объекта; в этом случае объект учитываться не будет. Опция Clementini предполагает, что граница полигона – это линия, отделяющая внутреннюю область полигона от внешней, граница линии – это ее конечные точки, а граница точки всегда является пустой.
  • 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 метров от целевого объекта. Для трех отношений WITHIN_A_DISTANCE, если значение search_radius не задано, используется расстояние, равное 0.

Linear Unit
distance_field_name
(Дополнительный)

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

String

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

ИмяОписаниеТип данных
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')
)