Resumen
Recupera registros relacionados basados en la relación entre el origen y la tabla o la clase de entidad de destino definida en una clase de relación.
El objeto devuelve un iterador de tuplas. Cada tupla contiene dos elementos: el primero es una fila (tupla) de la tabla de origen y el segundo, una fila (tupla) de la tabla de destino.
Debate
La clase SearchRelatedRecords se puede iterar mediante un bucle for. Es posible que el orden en que se producen los registros no coincidan con los valores de ObjectID que se han trasladado al parámetro oids_to_search. El objeto SearchRelatedRecords también admiten instrucciones de with para facilitar la eliminación de bloqueos de datos.
Los campos de extracción que devuelve cada tabla se pueden controlar con los parámetros origin_fields y destination_fields. origin_fields o destination_fields se pueden omitir por separado, pero a al menos uno de ellos se debe proporcionar un argumento. Si no se proporciona el argumento de uno de estos parámetros, se debe facilitar un argumento al otro.
Solo se puede acceder a las propiedades de objeto Geometry de la clase de entidad de origen y destino si se proporciona el token SHAPE@ en la lista de campos respectiva. Sin embargo, al acceso a la geometría completa con el token SHAPE@ es una operación intensiva desde el punto de vista informático. Si solo se requiere información de geometría simple, como las coordenadas x,y de un punto, utilice tokens como SHAPE@XY, SHAPE@Z y SHAPE@M para un acceso más rápido y eficaz.
La dirección se lee hacia delante de forma predeterminada. Esto significa que los valores ObjectID proporcionados se aplican a la tabla de origen y se utilizan para encontrar registros relacionados en la tabla de destino. Para invertir la dirección, configure el parámetro backward en True. En la actualidad, los valores ObjectID proporcionados se aplican a la tabla de destino y se utilizan para encontrar registros relacionados en la tabla de origen.
Si no se encuentran registros relacionados para un valor ObjectID proporcionado, no se producirán resultados para ese registro.
Sintaxis
SearchRelatedRecords (relationship_class, {oids_to_search}, {origin_fields}, {destination_fields}, {backward})
Parámetro | Explicación | Tipo de datos |
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. (El valor predeterminado es "*") | Integer |
origin_fields [origin_fields,...] | Una lista (o tupla) de nombres de campo. Para un único campo, puede utilizar una cadena en lugar de una lista de cadenas. Use un asterisco (*) en lugar de una lista de campos para acceder a todos los campos de la tabla de entrada (se excluyen los campos BLOB). Sin embargo, para un rendimiento más rápido y un orden de campo fiable, se recomienda que la lista de campos se acote a solo aquellos que se necesitan realmente. Es posible acceder a información adicional con tokens (como OID@) en lugar de nombres de campo: If no argument is passed to origin_fields, you must pass an argument to destination_fields.
(El valor predeterminado es None) | String |
destination_fields [destination_fields,...] | Una lista (o tupla) de nombres de campo. Para un único campo, puede utilizar una cadena en lugar de una lista de cadenas. Use un asterisco (*) en lugar de una lista de campos para acceder a todos los campos de la tabla de entrada (se excluyen los campos BLOB). Sin embargo, para un rendimiento más rápido y un orden de campo fiable, se recomienda que la lista de campos se acote a solo aquellos que se necesitan realmente. Es posible acceder a información adicional con tokens (como OID@) en lugar de nombres de campo: If no argument is passed to destination_fields, you must pass an argument to origin_fields.
(El valor predeterminado es 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. (El valor predeterminado es False) | Boolean |
Descripción general del método
Método | Explicación |
reset () | Resets the iteration back to the first row. |
Métodos
reset ()
Muestra de código
Use la clase SearchRelatedRecords para encontrar todos los edificios relacionados con un conjunto de parcelas.
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)
Utilice la clase SearchRelatedRecords hacia atrás para encontrar parcelas relacionadas con un conjunto de edificios.
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)
Utilice la clase SearchRelatedRecords para recuperar los atributos mediante el uso de tokens. En este ejemplo también se muestra la omisión de uno de estos parámetros de campo, que puede resultar útil si solo se está interesado en los registros relacionados.
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)
Use la función Python sorted para ordenar los registros que devuelve SearchRelatedRecords. En este ejemplo también se muestra la omisión del parámetro oids_to_search, lo que hará que la clase SearchRelatedRecords devuelva todos los registros relacionados.
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)