Краткая информация
Извлекает связанные записи на основе отношения между исходным и целевым классом объектов или таблицей, определенной в классе отношений.
Объект возвращает итератор кортежей. Каждый кортеж содержит два элемента: первый элемент - это строка (кортеж) из исходной таблицы, а второй элемент - это строка (кортеж) из целевой таблицы.
Обсуждение
Класс 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.
(Значение по умолчанию — None) | String |
destination_fields [destination_fields,...] | Список (или кортеж) имен полей. Для одного поля можно использовать строку вместо списка строк. Используйте звездочку (*) вместо списка полей для доступа ко всем полям из входной таблицы (BLOB-поля исключены). Однако для повышения производительности и улучшения надежности порядка полей рекомендуется сузить список полей до реально необходимых полей. Доступ к дополнительной информации можно получить, используя токены (такие как OID@) вместо имен полей: If no argument is passed to destination_fields, you must pass an argument to origin_fields.
(Значение по умолчанию — 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, чтобы найти все здания, относящиеся к набору земельных участков.
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 используется в обратном направлении, чтобы найти участки, относящиеся к набору зданий
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 для извлечения атрибутов с помощью токенов. Этот пример также демонстрирует пропуск одного из параметров поля, что может быть полезно, когда вас интересуют только связанные записи.
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)
Используйте функцию 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)