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

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

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

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

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

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

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

    • Join_Count- число присоединяемых объектов, соответствующих каждому целевому объекту
    • TARGET_FID- 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 Class

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 Class

Пример кода

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: Да

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