SearchRelatedRecords
Краткая информация
Объект 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 (Дополнительный) |
A list of Use an asterisk ( (Значение по умолчанию — "*") |
Integer |
|
origin_fields (Дополнительный) |
Список (или кортеж) имен полей. Для одного поля можно использовать строку вместо списка строк. Используйте звездочку ( Доступ к дополнительной информации можно получить, используя токены (такие как If no argument is passed to
(Значение по умолчанию — None) |
String |
|
destination_fields (Дополнительный) |
Список (или кортеж) имен полей. Для одного поля можно использовать строку вместо списка строк. Используйте звездочку ( Доступ к дополнительной информации можно получить, используя токены (такие как If no argument is passed to
(Значение по умолчанию — None) |
String |
|
backward (Дополнительный) |
The directionality of the related record search. Set to (Значение по умолчанию — False) |
Boolean |
Методы
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)