SearchRelatedRecords

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

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

Объект возвращает итератор кортежей. Каждый кортеж содержит два элемента: первый элемент - это строка (кортеж) из исходной таблицы, а второй элемент - это строка (кортеж) из целевой таблицы.

Обсуждение

Класс SearchRelatedRecords может быть итерирован с помощью цикла for. Порядок получения записей может не совпадать с порядком значений ObjectID, передаваемых параметру oids_to_search. Объект SearchRelatedRecords также поддерживает инструкции with, помогающие в удалении блокировок данных.

Точными полями, возвращаемыми из каждой таблицы, можно управлять с помощью параметров origin_fields и destination_fields. Любой из origin_fields или destination_fields может быть пропущен по отдельности, но по крайней мере один из них должен быть указан в качестве аргумента. Если один из этих параметров не указан в качестве аргумента, то другой должен быть указан в качестве аргумента.

К свойствам объекта Geometry исходного и целевого класса пространственных объектов можно получить доступ, указав токен SHAPE@ в соответствующем списке полей. Однако доступ к полной геометрии с помощью токена SHAPE@ является операцией, требующей больших вычислительных затрат. Если требуется только простая информация о геометрии, например, координат x и y точки, используйте для более быстрого и эффективного доступа такие токены, как SHAPE@XY, SHAPE@Z и SHAPE@M.

По умолчанию отношение считывается в прямом направлении. Это означает, что предоставленные значения ObjectID применяются к исходной таблице и используются для поиска связанных записей в целевой таблице. Чтобы изменить направление на противоположное, установите для параметра backward значение True. Теперь предоставленные значения ObjectID применяются к таблице назначения и используются для поиска связанных записей в исходной таблице.

Если для заданного значения ObjectID не найдено связанных записей, для этой записи не будет получено никаких результатов.

Синтаксис

 SearchRelatedRecords (relationship_class, {oids_to_search}, {origin_fields}, {destination_fields}, {backward})
ПараметрОписаниеТип данных
relationship_class

The path to the relationship class.

String
oids_to_search
[oids_to_search,...]

A list of ObjectID values that will be used to search for related records.

Use an asterisk (*) instead of a list of ObjectID values to search for all related records.

(Значение по умолчанию — "*")

Integer
origin_fields
[origin_fields,...]

Список (или кортеж) имен полей. Для одного поля можно использовать строку вместо списка строк.

Используйте звездочку (*) вместо списка полей для доступа ко всем полям из входной таблицы (BLOB-поля исключены). Однако для повышения производительности и улучшения надежности порядка полей рекомендуется сузить список полей до реально необходимых полей.

Доступ к дополнительной информации можно получить, используя токены (такие как OID@) вместо имен полей:

If no argument is passed to origin_fields, you must pass an argument to destination_fields.

  • SHAPE@XYКортеж x, y координат центроида объекта.
  • SHAPE@XYZКортеж x, y, z координат центроида объекта.
  • SHAPE@TRUECENTROIDКортеж x, y координат центроида объекта. Выдает такой же результат, что и SHAPE@XY.
  • SHAPE@XЗначение двойной точности координаты х объекта.
  • SHAPE@YЗначение двойной точности координаты y объекта.
  • SHAPE@ZЗначение двойной точности координаты z объекта.
  • SHAPE@MЗначение двойной точности m для объекта.
  • SHAPE@JSONСтрока Esri JSON, представляющая геометрию.
  • SHAPE@WKBСтандартное двоичное (well-known binary, WKB) представление для геометрии OGC. Он обеспечивает портативное представление значения геометрии в виде непрерывного потока байтов.Значения будут возвращены как объект bytearray.
  • SHAPE@WKTСтандартное текстовое (well-known text, WKT) представление для геометрии OGC. Он обеспечивает портативное представление значения геометрии в виде текстовой строки.
  • SHAPE@Объект geometry (геометрия) для пространственного объекта.
  • SHAPE@AREAЗначение двойной точности для площади объекта.
  • SHAPE@LENGTHЗначение двойной точности для длины объекта.
  • CREATED@Объект даты и времени, когда объект был создан. Это поле доступно только для чтения.
  • CREATOR@Строка имени пользователя, создавшего объект. Это поле доступно только для чтения.
  • EDITED@Объект даты и времени, указывающий на последнее редактирование объекта. Это поле доступно только для чтения.
  • EDITOR@Строка имени пользователя, который последний раз редактировал объект. Это поле доступно только для чтения.
  • GLOBALID@Строка универсального уникального идентификатора объекта. Это поле доступно только для чтения.
  • OID@Значение поля Object ID.
  • SUBTYPE@Целое число кода подтипа.

(Значение по умолчанию — None)

String
destination_fields
[destination_fields,...]

Список (или кортеж) имен полей. Для одного поля можно использовать строку вместо списка строк.

Используйте звездочку (*) вместо списка полей для доступа ко всем полям из входной таблицы (BLOB-поля исключены). Однако для повышения производительности и улучшения надежности порядка полей рекомендуется сузить список полей до реально необходимых полей.

Доступ к дополнительной информации можно получить, используя токены (такие как OID@) вместо имен полей:

If no argument is passed to destination_fields, you must pass an argument to origin_fields.

  • SHAPE@XYКортеж x, y координат центроида объекта.
  • SHAPE@XYZКортеж x, y, z координат центроида объекта.
  • SHAPE@TRUECENTROIDКортеж x, y координат центроида объекта. Выдает такой же результат, что и SHAPE@XY.
  • SHAPE@XЗначение двойной точности координаты х объекта.
  • SHAPE@YЗначение двойной точности координаты y объекта.
  • SHAPE@ZЗначение двойной точности координаты z объекта.
  • SHAPE@MЗначение двойной точности m для объекта.
  • SHAPE@JSONСтрока Esri JSON, представляющая геометрию.
  • SHAPE@WKBСтандартное двоичное (well-known binary, WKB) представление для геометрии OGC. Он обеспечивает портативное представление значения геометрии в виде непрерывного потока байтов.Значения будут возвращены как объект bytearray.
  • SHAPE@WKTСтандартное текстовое (well-known text, WKT) представление для геометрии OGC. Он обеспечивает портативное представление значения геометрии в виде текстовой строки.
  • SHAPE@Объект geometry (геометрия) для пространственного объекта.
  • SHAPE@AREAЗначение двойной точности для площади объекта.
  • SHAPE@LENGTHЗначение двойной точности для длины объекта.
  • CREATED@Объект даты и времени, когда объект был создан. Это поле доступно только для чтения.
  • CREATOR@Строка имени пользователя, создавшего объект. Это поле доступно только для чтения.
  • EDITED@Объект даты и времени, указывающий на последнее редактирование объекта. Это поле доступно только для чтения.
  • EDITOR@Строка имени пользователя, который последний раз редактировал объект. Это поле доступно только для чтения.
  • GLOBALID@Строка универсального уникального идентификатора объекта. Это поле доступно только для чтения.
  • OID@Значение поля Object ID.
  • SUBTYPE@Целое число кода подтипа.

(Значение по умолчанию — None)

String
backward

The directionality of the related record search. Set to False to search the relationship from the origin table to the destination table. Set to True to search the relationship from the destination table to the origin table.

(Значение по умолчанию — False)

Boolean

Обзор метода

МетодОписание
reset ()

Возвращает итерацию обратно к первой строке.

Методы

reset ()

Пример кода

SearchRelatedRecords, пример 1

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

import arcpy

relc = os.path.join(arcpy.env.workspace, "Parcel_Building_Rel")
oids = [2710, 1010]

with arcpy.da.SearchRelatedRecords(relc, oids, origin_fields="APN", destination_fields="BUILDING_NUMBER") as related_records:
    for record in related_records:
        print(record)
SearchRelatedRecords, пример 2

Класс SearchRelatedRecords используется в обратном направлении, чтобы найти участки, относящиеся к набору зданий

import arcpy

relc = os.path.join(arcpy.env.workspace, "Parcel_Building_Rel")
oids = [850, 921, 1018, 2301]

with arcpy.da.SearchRelatedRecords(relc, oids, origin_fields="APN", destination_fields="BUILDING_NUMBER", backward=True) as related_records:
    for record in related_records:
        print(record)
SearchRelatedRecords, пример 3

Используйте класс SearchRelatedRecords для извлечения атрибутов с помощью токенов. Этот пример также демонстрирует пропуск одного из параметров поля, что может быть полезно, когда вас интересуют только связанные записи.

import arcpy

relc = os.path.join(arcpy.env.workspace, "Parcel_Building_Rel")
oids = [2710]

with arcpy.da.SearchRelatedRecords(relc, oids, destination_fields=["OID@", "SHAPE@AREA"]) as related_records:
    for record in related_records:
        print(record)
SearchRelatedRecords, пример 4

Используйте функцию Python sorted для сортировки записей, возвращаемых с помощью SearchRelatedRecords. В этом примере также демонстрируется пропуск параметра oids_to_search, который приведет к тому, что класс SearchRelatedRecords вернет все связанные записи.

import arcpy

relc = os.path.join(arcpy.env.workspace, "Parcel_Building_Rel")

for record in sorted(arcpy.da.SearchRelatedRecords(relc, origin_fields="APN", destination_fields=["BUILDING_NUMBER", "POPULATION"])):
    print(record)