连接要素 (GeoAnalytics Desktop)

摘要

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

插图

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

使用情况

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

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

    选项描述

    空间关系

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

    • 相交
    • 相等
    • 平面邻近 - 使用平面距离
    • 测地线邻近 - 使用测地线距离
    • 包含
    • 位于
    • 接触
    • 交叉
    • 重叠

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

    时态关系

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

    • 汇合
    • 被汇合
    • 重叠
    • 被重叠
    • 期间
    • 包含
    • 等于
    • 结束
    • 之后结束
    • 开始
    • 之后开始
    • 相交
    • 周边
    • 近前
    • 近后

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

    属性关系

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

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

  • 空间关系参数值为平面邻近时,连接要素要求目标图层值已投影或输出坐标系设置为投影坐标系

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

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

  • 您可以选择使用连接条件参数来构建表达式以连接要素。 如果指定了表达式,则只会使用符合条件的要素。 例如,使用 $target["Magnitude"] > $join["Explosion"] 表达式时,如果目标要素大于字段名称为 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

    该字段表示结束时间,且将在输入的时间设置为间隔时创建。

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

    • 设置范围环境,以便仅分析感兴趣的数据。
    • 使连接条件尽可能具有选择性。 例如,基于同一数据,1 公里邻近连接的运行表现比 5 公里邻近连接要好。
    • 添加多个连接条件。 附加连接条件可使连接更具有选择性。 例如,基于同一数据,1 公里和 1 小时邻近连接的运行表现比 1 公里邻近连接要好。
    • 应用连接表达式。
    • 本地数据用于分析运行的位置。

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

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

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

参数

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

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

Table View
连接图层

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

Table View
输出数据集

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

Feature Class;Table
连接操作

指定当多个连接要素与单个目标要素之间存在同一空间关系时,如何在输出中处理目标图层值和连接图层值之间的连接。

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

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

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

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

Linear Unit
时态关系
(可选)

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

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

与目标要素的时间距离,其中将考虑使用连接要素来进行空间连接。 时间仅在时态关系参数值为邻近近前近后且两个要素均已启用时间时才有效。

Time Unit
属性关系
(可选)

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

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

Value Table
汇总字段
(可选)

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

Value Table
连接条件
(可选)

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

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

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

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

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

Boolean

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})
名称说明数据类型
target_layer

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

Table View
join_layer

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

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

代码示例

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)