SearchRelatedRecords

摘要

根据在关系类中定义的源要素类或表与目标要素类或表之间的关系检索相关记录。

此对象将返回一组迭代元组。 每个元组包含两个项目:第一个项目是源表中的行(元组),第二个项目是目标表中的行(元组)。

说明

可以使用 for 循环来迭代 SearchRelatedRecords 类。 返回记录的顺序可能与传递给 oids_to_search 参数的 ObjectID 值的顺序不匹配。 SearchRelatedRecords 对象还支持 with 语句,以帮助解除数据锁定。

可以使用 origin_fieldsdestination_fields 参数控制从每个表返回的确切字段。 可以省略 origin_fieldsdestination_fields 属性,但必须至少为其中一个属性提供参数。 如果其中属性未提供参数,则另一个属性必须提供参数。

通过在相应的字段列表中提供 SHAPE@ 令牌,可以访问源要素类和目标要素类的 Geometry 对象属性。 但是,使用 SHAPE@ 令牌访问完整的几何是一项计算密集型的操作。 如果仅需简单的几何信息,例如点的 x,y 坐标,可以使用 SHAPE@XYSHAPE@ZSHAPE@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.

  • SHAPE@XY一组要素的质心 x,y 坐标。
  • SHAPE@XYZ一组要素的质心 x,y,z 坐标。
  • SHAPE@TRUECENTROID一组要素的质心 x,y 坐标。 这会返回与 SHAPE@XY 相同的值。
  • SHAPE@X要素的双精度 x 坐标。
  • SHAPE@Y要素的双精度 y 坐标。
  • SHAPE@Z要素的双精度 z 坐标。
  • SHAPE@M要素的双精度 m 值。
  • SHAPE@JSON表示几何的 Esri JSON 字符串。
  • SHAPE@WKBOGC 几何的熟知二进制 (WKB) 表示。 用于以可移植的方式将几何值表示为连续的字节流。值返回为 bytearray 对象。
  • SHAPE@WKTOGC 几何的熟知文本 (WKT) 表示。 用于以可移植的方式将几何值表示为文本字符串。
  • SHAPE@要素的几何对象。
  • SHAPE@AREA要素的双精度面积。
  • SHAPE@LENGTH要素的双精度长度。
  • CREATED@要素创建时间的日期时间对象。 此字段为只读字段。
  • CREATOR@创建要素的用户名字符串。 此字段为只读字段。
  • EDITED@要素上次编辑时间的日期时间对象。 此字段为只读字段。
  • EDITOR@上次编辑要素的用户名字符串。 此字段为只读字段。
  • GLOBALID@要素的通用唯一标识符字符串。 此字段为只读字段。
  • OID@“对象 ID”字段的值。
  • SUBTYPE@整型子类型编码。

(默认值为 None)

String
destination_fields
[destination_fields,...]

字段名称列表(或组)。 对于单个字段,可以使用一个字符串,而不使用字符串列表。

要访问输入表中的所有字段(BLOB 字段除外),可以使用星号 (*) 代替字段列表。 但是,为了获得较快的性能和可靠的字段顺序,建议您将字段列表限制在实际需要的字段。

以令牌(如 OID@)取代字段名称可访问更多的信息:

If no argument is passed to destination_fields, you must pass an argument to origin_fields.

  • SHAPE@XY一组要素的质心 x,y 坐标。
  • SHAPE@XYZ一组要素的质心 x,y,z 坐标。
  • SHAPE@TRUECENTROID一组要素的质心 x,y 坐标。 这会返回与 SHAPE@XY 相同的值。
  • SHAPE@X要素的双精度 x 坐标。
  • SHAPE@Y要素的双精度 y 坐标。
  • SHAPE@Z要素的双精度 z 坐标。
  • SHAPE@M要素的双精度 m 值。
  • SHAPE@JSON表示几何的 Esri JSON 字符串。
  • SHAPE@WKBOGC 几何的熟知二进制 (WKB) 表示。 用于以可移植的方式将几何值表示为连续的字节流。值返回为 bytearray 对象。
  • SHAPE@WKTOGC 几何的熟知文本 (WKT) 表示。 用于以可移植的方式将几何值表示为文本字符串。
  • SHAPE@要素的几何对象。
  • SHAPE@AREA要素的双精度面积。
  • SHAPE@LENGTH要素的双精度长度。
  • CREATED@要素创建时间的日期时间对象。 此字段为只读字段。
  • CREATOR@创建要素的用户名字符串。 此字段为只读字段。
  • EDITED@要素上次编辑时间的日期时间对象。 此字段为只读字段。
  • EDITOR@上次编辑要素的用户名字符串。 此字段为只读字段。
  • GLOBALID@要素的通用唯一标识符字符串。 此字段为只读字段。
  • OID@“对象 ID”字段的值。
  • SUBTYPE@整型子类型编码。

(默认值为 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 示例 1

使用 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 示例 2

使用向后方向的 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 示例 3

使用 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)
SearchRelatedRecords 示例 4

使用 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)