Synthèse
Récupère les enregistrements associés en fonction de la relation entre les tables ou classes d’entités d’origine et de destination définies dans une classe de relations.
L’objet renvoie un itérateur de tuples. Chaque tuple contient deux éléments : le premier est une ligne (tuple) de la table d’origine et le deuxième, une ligne (tuple) de la table de destination.
Discussion
Une boucle for peut être utilisée pour itérer la classe SearchRelatedRecords. L’ordre suivant lequel les enregistrements sont renvoyés peut ne pas correspondre à celui des valeurs ObjectID transmises au paramètre oids_to_search. L’objet SearchRelatedRecords prend également en charge les instructions with pour faciliter la suppression des verrous de données.
Il est possible de contrôler les champs exacts renvoyés par chaque table, avec les paramètres origin_fields et destination_fields. Il est possible d’omettre origin_fields ou destination_fields de manière individuelle, mais un argument doit être fourni pour au moins l’un de ces paramètres. Si aucun argument n’est fourni pour l’un de ces paramètres, un argument doit être spécifié pour l’autre.
Il est possible d’accéder aux propriétés d’objet Geometry des classes d’entités d’origine et de destination en spécifiant le jeton SHAPE@ dans la liste de champs correspondante. Toutefois, l’accès à l’ensemble de la géométrie avec le jeton SHAPE@ sollicite un grand nombre de ressources. Si seules des informations de géométrie simples sont requises, telles que les coordonnées x, y d’un point, utilisez des jetons tels que SHAPE@XY, SHAPE@Z et SHAPE@M pour un accès plus rapide et plus efficace.
Par défaut, la relation est lue vers l’avant. Cela signifie que les valeurs ObjectID fournies s’appliquent à la table d’origine et qu’elles sont utilisées pour rechercher les enregistrements associés dans la table de destination. Pour inverser le sens, définissez le paramètre backward sur True. À présent, les valeurs ObjectID fournies s’appliquent à la table de destination et sont utilisées pour rechercher les enregistrements associés dans la table d’origine.
Si aucun enregistrement associé n’est détecté pour une valeur ObjectID fournie, aucun résultat n’est renvoyé pour cet enregistrement.
Syntaxe
SearchRelatedRecords (relationship_class, {oids_to_search}, {origin_fields}, {destination_fields}, {backward})
Paramètre | Explication | Type de données |
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. (La valeur par défaut est "*") | Integer |
origin_fields [origin_fields,...] | Liste (ou tuple) de noms de champs. Pour un champ unique, vous pouvez utiliser une chaîne de caractères au lieu d’une liste de chaînes. Utilisez un astérisque (*) au lieu d’une liste de champs pour accéder à tous les champs de la table en entrée (les champs BLOB sont exclus). Toutefois, pour obtenir des performances plus rapides et un ordre des champs fiable, il est recommandé de limiter la liste des champs à ceux qui sont réellement nécessaires. Il est possible d’accéder à des informations supplémentaires en utilisant des jetons (tels que OID@) à la place des noms de champs : If no argument is passed to origin_fields, you must pass an argument to destination_fields.
(La valeur par défaut est None) | String |
destination_fields [destination_fields,...] | Liste (ou tuple) de noms de champs. Pour un champ unique, vous pouvez utiliser une chaîne de caractères au lieu d’une liste de chaînes. Utilisez un astérisque (*) au lieu d’une liste de champs pour accéder à tous les champs de la table en entrée (les champs BLOB sont exclus). Toutefois, pour obtenir des performances plus rapides et un ordre des champs fiable, il est recommandé de limiter la liste des champs à ceux qui sont réellement nécessaires. Il est possible d’accéder à des informations supplémentaires en utilisant des jetons (tels que OID@) à la place des noms de champs : If no argument is passed to destination_fields, you must pass an argument to origin_fields.
(La valeur par défaut est 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. (La valeur par défaut est False) | Boolean |
Vue d’ensemble des méthodes
Méthode | Explication |
reset () | Resets the iteration back to the first row. |
Méthodes
reset ()
Exemple de code
Utilisez la classe SearchRelatedRecords pour rechercher tous les bâtiments associés à un ensemble de parcelles.
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)
Utilisez la classe SearchRelatedRecords vers l’arrière pour rechercher les parcelles associées à un ensemble de bâtiments.
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)
Utilisez la classe SearchRelatedRecords pour récupérer les attributs à l’aide de jetons. Cet exemple illustre également l’omission de l’un des paramètres de champ. Cela peut s’avérer utile si vous ne vous intéressez qu’aux enregistrements associés.
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)
Utilisez la fonction Python sorted pour trier les enregistrements renvoyés par SearchRelatedRecords. Cet exemple illustre également l’omission du paramètre oids_to_search, qui permet à la classe SearchRelatedRecords de renvoyer tous les enregistrements associés.
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)
Vous avez un commentaire à formuler concernant cette rubrique ?