连接要素 (GeoAnalytics Desktop)

摘要

可根据空间、时态和属性关系或这些关系的某种组合将一个图层的属性连接到另一个图层。

插图

连接要素工具图示
“连接要素”工具的两个示例均展示了时空连接。

使用情况

  • 空间连接根据要素的空间位置对输入要素(目标图层连接图层参数值)中的要素(行)进行匹配。 时态连接根据要素的时态关系对输入要素中的要素(行)进行匹配。 属性连接根据字段值匹配要素。

  • 可以根据空间关系、时间关系、属性关系或上述三者的组合来连接要素。

    选项描述

    空间关系

    将确定要素是否彼此相连的空间关系。 可用的关系将取决于正在连接的图层的几何类型(点、线或面)。 可用的空间关系如下:

    • 相交
    • Equals
    • 平面邻近 - 使用平面距离。
    • 测地线邻近 - 使用测地线距离。
    • 包含
    • 位于
    • Touches
    • 交叉
    • 重叠

    了解有关 GeoAnalytics Desktop 工具中空间关系的详细信息

    时态关系

    将确定要素是否彼此相连的时态关系。 可用的关系取决于正在连接的图层的时间类型(时刻或间隔)。 可用的时间关系如下:

    • 汇合
    • 被汇合
    • 重叠
    • 被重叠
    • 期间
    • 包含
    • Equals
    • 结束
    • 之后结束
    • 开始
    • 之后开始
    • 相交
    • 近邻分析
    • 近前
    • 近后

    了解有关 GeoAnalytics Desktop 工具中时态关系的详细信息

    属性关系

    将确定要素是否彼此相连的属性关系。 如果连接图层中的字段值等于目标图层中的字段值,则会对要素进行匹配。

  • 如果目标要素与连接要素处于不同的坐标系,则将使用目标要素的坐标系。 如果已指定输出坐标系,则两个要素都将投影至输出坐标系,然后进行连接。

  • 空间关系参数值为邻近平面时,目标图层必须已投影,或者输出坐标系必须设置为投影坐标系

  • 如果多个要素与同一目标要素相匹配,则您可以决定是否连接所有匹配要素(连接操作值为一对多连接)或是否将所有匹配要素汇总到一起(连接操作值为一对一连接),具体如下:

    • 一对多连接 - 将连接图层中的所有匹配要素连接到目标图层。 此结果图层将包含目标要素的多个记录。
    • 一对一连接 - 将所有匹配的连接要素汇总到目标图层中的每个要素。 只有具备匹配项的要素才会包括在汇总和输出中。 系统将添加已连接要素计数,此外也将添加其他统计数据,如总和、最小值、最大值、范围、平均值、方差和标准差。 默认情况下,仅具有指定关系的目标要素才会保留在输出要素类(这称为内部连接)中。 如果选中保留所有目标要素,则所有输入目标要素都将写入输出要素类(这称为左外部连接)。
    一对多和一对一连接示例
    显示了一对多和一对一连接示例。 在本示例中,一对一连接仅包括计数;可按照如下所示计算其他统计数据。

  • 使用连接条件参数构建表达式,可以连接要素。 如果指定了表达式,则只会使用符合条件的要素。 例如,如果目标要素大于字段名称为 Explosion 的连接要素,则只能使用表达式 $target["Magnitude"] > $join["Explosion"] 通过字段 Magnitude 连接目标要素。 有关详细信息,请参阅 GeoAnalytics Desktop 工具中的 Arcade 表达式

  • 运行一对多连接时,输出记录中将包含以下字段。

    • 来自目标图层的所有字段
    • 来自连接图层的所有字段

    如果目标和连接数据集中存在相同的字段名称,则连接字段将以单词 join 开头(例如,join_fieldname)。

    字段名描述

    start_date

    此字段在输入设置为时刻或间隔时创建,表示开始时间。

    end_date

    此字段在输入设置为间隔时创建,表示结束时间。

    除了目标图层中的所有字段之外,在运行一对一连接时,以下字段将包含在输出要素中:

    字段名描述

    count

    已连接的要素数。

    statistic_fieldname

    指定的统计数据将分别创建一个属性字段,名称格式如下:statistic_fieldname。 例如,id 字段的最大值和标准差分别为 MAX_idSD_id

    start_date

    此字段在输入设置为时刻或间隔时创建,表示开始时间。

    end_date

    此字段在输入设置为间隔时创建,表示结束时间。

  • 如果勾选了包括距离参数,并且连接操作参数设置为一对多连接,则输出要素中可能包括以下字段:

    字段名描述

    distance

    目标要素与连接要素之间的距离。 如果空间关系参数设置为平面邻近测地线邻近,则包括此字段。

    距离为 0 表示目标和连接几何相交。 空值表示几何之间的距离大于空间邻近距离参数值。 如果空间关系参数值为平面邻近,则距离值将为平面距离;如果参数值为测地线邻近,则距离值将为测地线距离。 值将以距离单位参数指定的单位表示。 默认距离单位为米。

    timegap

    目标和连接要素之间的时间差(以毫秒为单位)。 如果时态关系参数设置为邻近近前近后,则包括此字段。

    差值为 0 表示目标和连接要素在时间上相交。 正值表示目标要素在连接要素之前发生,负值表示连接要素在目标要素之前发生。 空值表示要素未满足连接条件。 例如,要素之间的距离大于时间邻近距离参数值。

  • 可执行以下一项或多项操作来提高连接要素工具的性能。

    • 设置范围环境,以便仅分析感兴趣的数据。
    • 使连接条件尽可能具有选择性。 例如,1 千米的邻近连接在相同数据上的性能要优于 5 千米的邻近连接。
    • 添加多个连接条件。 通过其他连接条件,使连接更具选择性。 例如,1 千米和 1 小时的邻近连接在相同数据上的性能要优于 1 公里的邻近连接。
    • 应用连接表达式。
    • 本地数据用于分析运行的位置。

  • 还可以使用分析工具箱中的空间连接工具完成类似性分析。

  • 此地理处理工具由 Spark 作为支持。 可在台式计算机上并行使用多个核来完成分析。 要了解有关运行分析的详细信息,请参阅 GeoAnalytics Desktop 工具的注意事项

  • 运行 GeoAnalytics Desktop 工具时,将在台式计算机上完成分析。 为获得最佳性能,应在桌面上提供数据。 如果使用的是托管要素图层,则建议您使用 ArcGIS GeoAnalytics Server。 如果您的数据不是本地数据,则运行工具需要更长时间。 要使用 ArcGIS GeoAnalytics Server 执行分析,请参阅 GeoAnalytics Tools

参数

标注说明数据类型
目标图层

包含目标要素。 会将目标要素中的属性和已连接要素中的属性传递到输出。

Table View
连接图层

包含连接要素。 连接要素的属性将被连接到目标要素的属性中。 有关连接操作的类型对所连接属性聚合的影响的详细信息,请参阅连接操作参数的说明。

Table View
输出数据集

此新要素类包含具有连接要素的目标图层要素。

Feature Class;Table
连接操作

在具有相同空间关系的目标要素和连接要素之间存在一对多关系时,指定输出中目标图层值和连接图层值之间的连接方式。

  • 一对一连接将对多个连接要素中的属性进行聚合。 例如,如果在两个独立的面连接要素中找到了同一个点目标要素,将对这两个面的属性进行聚合,然后将其传递到输出点要素类。 如果一个面要素的属性值为 3,另一个面要素的属性值为 7,且为该字段指定了汇总统计数据总和,则输出要素类中的聚合值将为 10。 此为默认设置,且仅返回计数统计数据。
  • 一对多连接输出要素类将包含目标要素的多个副本(记录)。 例如,如果在两个独立的面连接要素中存在同一个点目标要素,则输出要素类将包含目标要素的两个副本:分别包含两个面的属性记录。 此选项不提供汇总统计信息。
String
空间关系
(可选)

指定将用于空间连接要素的条件。

  • 相交如果连接要素与目标要素相交,将匹配连接要素中相交的要素。 这是默认设置。
  • Equals如果连接要素与目标要素的几何类型相同,则将匹配连接要素中的要素。
  • 平面邻近如果连接要素在目标要素的指定距离之内,将匹配处于该距离内的要素。 使用平面距离测量距离。 在空间邻近距离参数中指定距离。
  • 测地线邻近如果连接要素在目标要素的指定距离之内,将匹配处于该距离内的要素。 使用测地线方法测量距离。 在空间邻近距离参数中指定距离。
  • 包含如果目标要素中包含连接要素中的要素,将匹配连接要素中被包含的要素。 目标要素必须是面或折线。 只有当目标要素也为面时连接要素才可为面。 面可包含任何要素类型。 折线只能包含线和点。 点不能包含任何要素,甚至不能包含点。 如果连接要素完全位于目标要素的边界上(没有任何部件完全位于里面或外面),则不会匹配要素。
  • 位于如果目标要素位于连接要素内,将匹配连接要素中包含目标要素的要素。 这与包含关系相反。 仅当连接要素也为面时,目标要素才可为面。 仅当点也为目标要素时,连接要素才能为点。 如果连接要素中的全部要素均位于目标要素的边界上,则不会匹配要素。
  • Touches如果连接要素中具有边界与目标要素相接的要素,将匹配这些要素。 如果目标和连接要素为线或面,则连接要素的边界只可接触目标要素的边界,且连接要素的任何部分均不可跨越目标要素的边界。
  • 交叉如果连接要素中具有轮廓与目标要素交叉的要素,则将匹配这些要素。 连接要素和目标要素必须是线或面。 如果将面用于连接或目标要素,则会使用面的边界(线)。 将匹配在某一点交叉的线,而不是共线的线。
  • 重叠如果连接要素与目标要素重叠,将匹配连接要素中的要素。
String
空间邻近距离
(可选)

如果连接要素与目标要素的距离在此范围内,则有可能进行空间连接。 仅当空间关系参数值为平面邻近测地线邻近时,搜索半径才有效。

Linear Unit
时态关系
(可选)

指定将用于匹配要素的时间条件。

  • 汇合当目标时间间隔终点与连接时间间隔起点一致时,目标时间与连接时间汇合。
  • 被汇合当目标时间间隔起点与连接时间间隔终点一致时,目标时间被连接时间汇合。
  • 重叠当目标时间间隔分别在连接时间间隔的起点和终点前开始和结束时,目标时间与连接时间重叠。
  • 被重叠当目标时间间隔分别在连接时间间隔的起点和终点时间后开始和结束时,目标时间被连接时间重叠。
  • 期间当目标时间发生在连接时间间隔的起点和终点之间时,目标时间处于连接时间期间。
  • 包含当连接要素时间发生在目标时间间隔的起点和终点之间时,目标时间包含连接时间。
  • Equals如果两个时间的时刻或间隔完全一致,则这两个时间被视为完全相同。
  • 结束当目标时间与连接时间在同一时间结束,且目标时间在连接时间之后开始时,目标时间在连接时间之前结束。
  • 之后结束当连接要素时间与目标时间在同一时间结束,且连接时间在目标时间之后开始时,目标时间在连接时间之后结束。
  • 开始当目标时间与连接时间间隔在同一时间开始,且目标时间在连接时间间隔终点之前结束时,目标时间在连接时间之前开始。
  • 之后开始当目标间隔时间与连接时间在同一时间开始,且目标时间在连接时间之后结束时,目标时间在连接时间之后开始。
  • 相交当目标时间的任何一部分与连接时间在同一时间发生时,目标时间与连接时间相交。
  • 近邻分析当目标时间在连接时间的指定时间范围内时,目标时间邻近连接时间。
  • 近前当目标时间在连接时间之前且与其间隔在指定时间范围内时,目标时间将处于连接时间的近前位置。
  • 近后当目标时间在连接时间之后且与其间隔在指定时间范围内时,目标时间将处于连接时间的近后位置。
String
时态邻近距离
(可选)

如果连接要素与目标要素的时间距离在此范围内,则有可能进行空间连接。 仅在时态关系参数值为邻近近前近后,且两个要素均已启用时间时,时间才有效。

Time Unit
属性关系
(可选)

基于属性字段中值的连接要素。 必须指定目标图层中的哪个属性字段与连接图层中的属性字段匹配。

  • 目标字段 - 包含待匹配值的目标图层中的属性字段。
  • 连接字段 - 包含待匹配值的连接图层中的属性字段。

Value Table
汇总字段
(可选)

将根据指定字段进行计算的统计数据。

Value Table
连接条件
(可选)

将条件应用到指定字段。 将仅连接带有符合这些条件的字段的要素。

例如,如果连接图层中的 HealthSpending 属性比目标图层中的 Income 属性大 20%,则可将连接条件应用到要素。 使用 Arcade 表达式(例如 $join["HealthSpending"] > $target["Income"] * .2

String
保留所有目标要素
(可选)

指定是在输出要素类中保留所有目标要素(左侧外部连接),还是仅保留那些与连接要素有指定关系的目标要素(称为内部连接)。

  • 选中 - 在输出中保留所有目标要素。
  • 未选中 - 在输出要素类中仅保留具有指定关系的目标要素。 不在面要素内的所有点要素将从输出中排除。 这是默认设置。

Boolean
包含距离
(可选)

指定结果中是否包含空间距离或时间差异。

连接操作参数值为一对多连接且满足以下任一条件时,此参数处于活动状态:

  • 空间关系参数值为平面邻近测地线邻近
  • 时态关系参数设置为邻近近前近后
  • 选中 - 结果中将包含空间距离或时间差异。
  • 未选中 - 结果中不包含空间距离或时间差异。 这是默认设置。

Boolean
距离单位
(可选)

指定输出要素类中距离值所使用的测量单位。

  • 测量单位将为米。 这是默认设置。
  • 千米测量单位将为千米。
  • 美国测量英里测量单位将为美国测量英里。
  • 美国测量海里测量单位将为美国测量海里。
  • 美国测量码测量单位将为美国测量码。
  • 美国测量英尺测量单位将为美国测量英尺。
  • 法定英里测量单位将为法定英里。
  • 国际海里测量单位将为国际海里。
  • 国际码测量单位将为国际码。
  • 国际英尺测量单位将为国际英尺。
String

arcpy.geoanalytics.JoinFeatures(target_layer, join_layer, output, join_operation, {spatial_relationship}, {spatial_near_distance}, {temporal_relationship}, {temporal_near_distance}, {attribute_relationship}, {summary_fields}, {join_condition}, {keep_all_target_features}, {include_distance}, {distance_unit})
名称说明数据类型
target_layer

包含目标要素。 会将目标要素中的属性和已连接要素中的属性传递到输出。

Table View
join_layer

包含连接要素。 连接要素的属性将被连接到目标要素的属性中。 有关连接操作的类型对所连接属性聚合的影响的详细信息,请参阅连接操作参数的说明。

Table View
output

此新要素类包含具有连接要素的目标图层要素。

Feature Class;Table
join_operation

在具有相同空间关系的目标要素和连接要素之间存在一对多关系时,指定输出要素中 target_layer 值和 join_layer 值之间的连接方式。

  • JOIN_ONE_TO_ONE将对多个连接要素中的属性进行聚合。 例如,如果在两个独立的面连接要素中找到了同一个点目标要素,将对这两个面的属性进行聚合,然后将其传递到输出点要素类。 如果一个面要素的属性值为 3,另一个面要素的属性值为 7,且为该字段指定了汇总统计数据总和,则输出要素类中的聚合值将为 10。 此为默认设置,且仅返回计数统计数据。
  • JOIN_ONE_TO_MANY输出要素类将包含目标要素的多个副本(记录)。 例如,如果在两个独立的面连接要素中存在同一个点目标要素,则输出要素类将包含目标要素的两个副本:分别包含两个面的属性记录。 此选项不提供汇总统计信息。
String
spatial_relationship
(可选)

指定将用于空间连接要素的条件。

  • INTERSECTS如果连接要素与目标要素相交,将匹配连接要素中相交的要素。 这是默认设置。
  • EQUALS如果连接要素与目标要素的几何类型相同,则将匹配连接要素中的要素。
  • NEAR如果连接要素在目标要素的指定距离之内,将匹配处于该距离内的要素。 使用平面距离测量距离。 在 spatial_near_distance 参数中指定距离。
  • NEAR_GEODESIC如果连接要素在目标要素的指定距离之内,将匹配处于该距离内的要素。 使用测地线方法测量距离。 在 spatial_near_distance 参数中指定距离。
  • CONTAINS如果目标要素中包含连接要素中的要素,将匹配连接要素中被包含的要素。 目标要素必须是面或折线。 只有当目标要素也为面时连接要素才可为面。 面可包含任何要素类型。 折线只能包含线和点。 点不能包含任何要素,甚至不能包含点。 如果连接要素完全位于目标要素的边界上(没有任何部件完全位于里面或外面),则不会匹配要素。
  • WITHIN如果目标要素位于连接要素内,将匹配连接要素中包含目标要素的要素。 这与包含关系相反。 仅当连接要素也为面时,目标要素才可为面。 仅当点也为目标要素时,连接要素才能为点。 如果连接要素中的全部要素均位于目标要素的边界上,则不会匹配要素。
  • TOUCHES如果连接要素中具有边界与目标要素相接的要素,将匹配这些要素。 如果目标和连接要素为线或面,则连接要素的边界只可接触目标要素的边界,且连接要素的任何部分均不可跨越目标要素的边界。
  • CROSSES如果连接要素中具有轮廓与目标要素交叉的要素,则将匹配这些要素。 连接要素和目标要素必须是线或面。 如果将面用于连接或目标要素,则会使用面的边界(线)。 将匹配在某一点交叉的线,而不是共线的线。
  • OVERLAPS如果连接要素与目标要素重叠,将匹配连接要素中的要素。
String
spatial_near_distance
(可选)

如果连接要素与目标要素的距离在此范围内,则有可能进行空间连接。 仅当 spatial_relationship 参数值为 NEARNEAR_GEODESIC 时,搜索半径才有效。

Linear Unit
temporal_relationship
(可选)

指定将用于匹配要素的时间条件。

  • MEETS当目标时间间隔终点与连接时间间隔起点一致时,目标时间与连接时间汇合。
  • MET_BY当目标时间间隔起点与连接时间间隔终点一致时,目标时间被连接时间汇合。
  • OVERLAPS当目标时间间隔分别在连接时间间隔的起点和终点前开始和结束时,目标时间与连接时间重叠。
  • OVERLAPPED_BY当目标时间间隔分别在连接时间间隔的起点和终点时间后开始和结束时,目标时间被连接时间重叠。
  • DURING当目标时间发生在连接时间间隔的起点和终点之间时,目标时间处于连接时间期间。
  • CONTAINS当连接要素时间发生在目标时间间隔的起点和终点之间时,目标时间包含连接时间。
  • EQUALS如果两个时间的时刻或间隔完全一致,则这两个时间被视为完全相同。
  • FINISHES当目标时间与连接时间在同一时间结束,且目标时间在连接时间之后开始时,目标时间在连接时间之前结束。
  • FINISHED_BY当连接要素时间与目标时间在同一时间结束,且连接时间在目标时间之后开始时,目标时间在连接时间之后结束。
  • STARTS当目标时间与连接时间间隔在同一时间开始,且目标时间在连接时间间隔终点之前结束时,目标时间在连接时间之前开始。
  • STARTED_BY当目标间隔时间与连接时间在同一时间开始,且目标时间在连接时间之后结束时,目标时间在连接时间之后开始。
  • INTERSECTS当目标时间的任何一部分与连接时间在同一时间发生时,目标时间与连接时间相交。
  • NEAR当目标时间在连接时间的指定时间范围内时,目标时间邻近连接时间。
  • NEAR_BEFORE当目标时间在连接时间之前且与其间隔在指定时间范围内时,目标时间将处于连接时间的近前位置。
  • NEAR_AFTER当目标时间在连接时间之后且与其间隔在指定时间范围内时,目标时间将处于连接时间的近后位置。
String
temporal_near_distance
(可选)

如果连接要素与目标要素的时间距离在此范围内,则有可能进行空间连接。 仅在 temporal_relationship 参数值为 NEARNEAR_BEFORENEAR_AFTER,且两个要素均已启用时间时,时间才有效。

Time Unit
attribute_relationship
[attribute_relationship,...]
(可选)

基于属性字段中值的连接要素。 必须指定目标图层中的哪个属性字段与连接图层中的属性字段匹配。

  • 目标字段 - 包含待匹配值的目标图层中的属性字段。
  • 连接字段 - 包含待匹配值的连接图层中的属性字段。

Value Table
summary_fields
[summary_fields,...]
(可选)

将根据指定字段进行计算的统计数据。

  • COUNT - 非空值的数目。 可用于数值字段或字符串。 [null, 0, 2] 的计数为 2
  • SUM - 字段内数值的总和。 [null, null, 3] 的总和为 3
  • MEAN - 数值的平均值。 [0,2, null] 的平均值为 1
  • MIN - 数值字段的最小值。 [0, 2, null] 的最小值为 0
  • MAX - 数值字段的最大值。 [0, 2, null] 的最大值为 2
  • STDDEV - 数值字段的标准差。 [1] 的标准差为 null[null, 1,1,1] 的标准差为 null
  • VAR - 轨迹中数值字段内数值的方差。 [1] 的方差为 null[null, 1,1,1] 的方差为 null
  • RANGE - 数值字段的范围。 其计算方法为最大值减去最小值。 [0, null, 1] 的范围为 1[null, 4] 的范围为 0
  • ANY - 字符串型字段中的示例字符串。

Value Table
join_condition
(可选)

将条件应用到指定字段。 将仅连接带有符合这些条件的字段的要素。

例如,如果连接图层中的 HealthSpending 属性比目标图层中的 Income 属性大 20%,则可将连接条件应用到要素。 使用 Arcade 表达式(例如 $join["HealthSpending"] > $target["Income"] * .2

String
keep_all_target_features
(可选)

指定是在输出要素类中保留所有目标要素(左侧外部连接),还是仅保留那些与连接要素有指定关系的目标要素(称为内部连接)。

  • KEEP_ALL在输出中保留所有目标要素。
  • KEEP_COMMON在输出要素类中仅保留具有指定关系的目标要素。 这是默认设置。
Boolean
include_distance
(可选)

指定结果中是否包含空间距离或时间差异。

join_operation 参数值为 JOIN_ONE_TO_MANY 且满足以下任一条件时,此参数处于活动状态:

  • spatial_relationship 参数值为 NEARNEAR_GEODESIC
  • temporal_relationship 参数值为 NEARNEAR_BEFORENEAR_AFTER

  • INCLUDE_DISTANCE结果中将包含空间距离或时间差异。
  • NO_INCLUDE_DISTANCE结果中不包含空间距离或时间差异。 这是默认设置。
Boolean
distance_unit
(可选)

指定输出要素类中距离值所使用的测量单位。

  • METERS测量单位将为米。 这是默认设置。
  • KILOMETERS测量单位将为千米。
  • MILES测量单位将为美国测量英里。
  • NAUTICAL_MILES测量单位将为美国测量海里。
  • YARDS测量单位将为美国测量码。
  • FEET测量单位将为美国测量英尺。
  • MILES_INT测量单位将为法定英里。
  • NAUTICAL_MILES_INT测量单位将为国际海里。
  • YARDS_INT测量单位将为国际码。
  • FEET_INT测量单位将为国际英尺。
String

代码示例

JoinFeatures 示例(独立脚本)

以下独立脚本演示了如何使用 JoinFeatures 函数。

# Name: JoinFeatures.py
# Description: Join crime events that are close together in time and space, and 
#              return the count of nearby crimes. This example is a self join 
#              (joining the same layer to itself).

# Import system modules 
import arcpy 

arcpy.env.workspace = "C:/data/CityData.gdb"

# Enable time on the input features using an .lyrx file.
# To create the .lyrx file, add your layer to a map, open the layer properties 
# and enable time. Then right-click the layer and select Share As Layer File.
inputLyrx = r'C:\data\ChicagoCrimes.lyrx'

# MakeFeatureLayer converts the .lyrx to features
chicagoCrimesLayer = arcpy.management.MakeFeatureLayer(inputLyrx, "Crimes_layer")

# ApplySymbologyFromLayer sets the time using the .lyrx file definition
arcpy.management.ApplySymbologyFromLayer(chicagoCrimesLayer, inputLyrx)

# Set local variables
spatialOperation = "NEAR" 
nearDistance = "1 Kilometers" 
temporalOperation = "NEAR" 
nearTime = "3 Hours" 
out = "CloseCrimes"

# Run Join Features
arcpy.gapro.JoinFeatures(chicagoCrimesLayer, inFeatures, out, "JOIN_ONE_TO_ONE", 
                         spatialOperation, nearDistance, temporalOperation, 
                         nearTime)