摘要
根据在关系类中定义的源要素类或表与目标要素类或表之间的关系检索相关记录。
此对象将返回一组迭代元组。 每个元组包含两个项目:第一个项目是源表中的行(元组),第二个项目是目标表中的行(元组)。
说明
可以使用 for 循环来迭代 SearchRelatedRecords 类。 返回记录的顺序可能与传递给 oids_to_search 参数的 ObjectID 值的顺序不匹配。 SearchRelatedRecords 对象还支持 with 语句,以帮助解除数据锁定。
可以使用 origin_fields 和 destination_fields 参数控制从每个表返回的确切字段。 可以省略 origin_fields 或 destination_fields 属性,但必须至少为其中一个属性提供参数。 如果其中属性未提供参数,则另一个属性必须提供参数。
通过在相应的字段列表中提供 SHAPE@ 令牌,可以访问源要素类和目标要素类的 Geometry 对象属性。 但是,使用 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)