连接要素 (GeoAnalytics)

描述

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

插图

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

使用方法

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

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

    选项说明

    空间关系

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

    • 相交
    • 等于
    • 平面邻近 - 使用平面距离。
    • 测地线邻近 - 使用测地线距离。此关系仅适用于 ArcGIS Enterprise 10.7.1 及更高版本。
    • 包含
    • 位于
    • 接触
    • 交叉
    • 重叠

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

    时态关系

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

    • 满足
    • 被满足
    • 重叠
    • 被重叠
    • 期间
    • 包含
    • 等于
    • 结束
    • 之后结束
    • 开始
    • 之后开始
    • 相交
    • 邻近
    • 近前
    • 近后

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

    属性关系

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

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

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

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

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

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

  • 在运行一对多连接时,输出要素中包括以下字段:

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

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

    字段名称说明

    start_datetime

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

    end_datetime

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

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

    字段名称说明

    count

    已连接的要素计数。

    statistic_fieldname

    指定的统计信息将各自创建一个属性字段,并按照以下格式命名:statistic_fieldname。例如,id 字段的最大值和标准差为 MAX_idSD_id

    start_datetime

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

    end_datetime

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

  • 您可以执行以下一项或多项操作来提高重新构建轨迹工具的性能。

    • 设置范围环境,以便仅分析感兴趣的数据。
    • 使用平面方法而不是测地线方法。
    • 请勿应用缓冲区。
    • 可以使用时间分割时间界限分割距离分割分割表达式参数来分割轨迹。时间界限分割参数对性能的提高最大。
    • 本地数据用于分析运行的位置。

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

  • 此地理处理工具由 ArcGIS GeoAnalytics Server 作为支持。分析将在 GeoAnalytics Server 上完成,且结果将存储在 ArcGIS Enterprise 的内容中。

  • GeoAnalytics Server 工具运行时,GeoAnalytics Server 上的分析已完成。要获得最佳性能,通过 ArcGIS Enterprise 门户上托管的要素图层或通过大数据文件共享,可以将数据用于 GeoAnalytics Server。在分析开始之前,非 GeoAnalytics Server 本地数据将被转移到您的 GeoAnalytics Server。这意味着运行工具需要更长时间,并且在某些情况下,从 ArcGIS ProGeoAnalytics Server 移动数据可能会失败。失败的阈值取决于网络速度,以及数据的大小和复杂性。因此,建议您始终共享数据或创建大数据文件共享。

    了解有关将数据共享至您的门户的详细信息。

    了解有关通过 Server Manager 创建大数据文件共享的详细信息

语法

arcpy.geoanalytics.JoinFeatures(target_layer, join_layer, output_name, join_operation, {spatial_relationship}, {spatial_near_distance}, {temporal_relationship}, {temporal_near_distance}, {attribute_relationship}, {summary_fields}, {join_condition}, {data_store}, {keep_all_target_features})
参数说明数据类型
target_layer

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

Record Set
join_layer

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

Record Set
output_name
String
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 参数中指定距离。该选项适用于 ArcGIS Enterprise 10.7 或更高版本。
  • 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当目标时间在连接时间之前且与其间隔在指定时间范围内时,目标时间将处于连接时间的近前位置。该选项适用于 ArcGIS Enterprise 10.6 或更高版本。
  • NEAR_AFTER当目标时间在连接时间之后且与其间隔在指定时间范围内时,目标时间将处于连接时间的近后位置。该选项适用于 ArcGIS Enterprise 10.6 或更高版本。

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

  • MEETS当目标时间间隔终点与连接时间间隔起点一致时,目标时间与连接时间汇合。
  • MET_BY当目标时间间隔起点与连接时间间隔终点一致时,目标时间被连接时间汇合。
  • OVERLAPS当目标时间间隔分别在连接时间间隔的起点和终点前开始和结束时,目标时间与连接时间重叠。
  • OVERLAPPED_BY当目标时间间隔分别在连接时间间隔的起点和终点时间后开始和结束时,目标时间被连接时间重叠。
  • DURING当目标时间发生在连接时间间隔的起点和终点之间时,目标时间处于连接时间期间。
  • CONTAINS当连接要素时间发生在目标时间间隔的起点和终点之间时,目标时间包含连接时间。
  • EQUALS如果两个时间的时刻或间隔完全一致,则这两个时间被视为完全相同。
  • FINISHES当目标时间与连接时间在同一时间结束,且目标时间在连接时间之后开始时,目标时间在连接时间之前结束。
  • FINISHED_BY当连接要素时间与目标时间在同一时间结束,且连接时间在目标时间之后开始时,目标时间在连接时间之后结束。
  • STARTS当目标时间与连接时间间隔在同一时间开始,且目标时间在连接时间间隔结束之前结束时,目标时间在连接时间之前开始。
  • STARTED_BY当目标间隔时间与连接时间在同一时间开始,且目标时间在连接时间之后结束时,目标时间在连接时间之后开始。
  • INTERSECTS当目标时间的任何一部分与连接时间在同一时间发生时,目标时间与连接时间相交。
  • NEAR当目标时间在连接时间的指定时间范围内时,目标时间邻近连接时间。
  • NEAR_BEFORE当目标时间在连接时间之前且与其间隔在指定时间范围内时,目标时间将处于连接时间的近前位置。该选项适用于 ArcGIS Enterprise 10.6 或更高版本。
  • NEAR_AFTER当目标时间在连接时间之后且与其间隔在指定时间范围内时,目标时间将处于连接时间的近后位置。该选项适用于 ArcGIS Enterprise 10.6 或更高版本。
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%,则可将连接条件应用到要素。在 10.5 和 10.5.1 版本中,用于应用此表达式的连接条件为 join["HealthSpending"] > target["Income"] * .2。在 10.6 及更高版本中,请使用 Arcade 表达式,例如 $join["HealthSpending"] > $target["Income"] * .2

String
data_store
(可选)

指定将用于保存输出的 ArcGIS Data Store。默认为 SPATIOTEMPORAL_DATA_STORE。在时空大数据存储中存储的所有结果都将存储在 WGS84 中。在关系数据存储中存储的结果都将保持各自的坐标系。

  • SPATIOTEMPORAL_DATA_STORE输出将存储在时空大数据存储中。这是默认设置。
  • RELATIONAL_DATA_STORE输出将存储在关系数据存储中。
String
keep_all_target_features
(可选)

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

  • KEEP_ALL将在输出中保留所有目标要素(左外连接)。
  • KEEP_COMMON仅在输出要素类中保留具有指定关系的目标要素(内部连接)。这是默认设置。
Boolean

派生输出

名称说明数据类型
output

连接的输出。

记录集

代码示例

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).
# Requirements: ArcGIS GeoAnalytics Server 
# Import system modules 
import arcpy 
# Set local variables 
inFeatures = "https://MyGeoAnalyticsMachine.domain.com/geoanalytics/rest/services/DataStoreCatalogs/bigDataFileShares_Crimes/BigDataCatalogServer/Chicago"
spatialOperation = "NEAR" 
nearDistance = "1 Kilometers" 
temporalOperation = "NEAR" 
nearTime = "3 Hours" 
outFS = "CloseCrimes" 
dataStore = "SPATIOTEMPORAL_DATA_STORE" 
# Execute Join Features
arcpy.geoanalytics.JoinFeatures(inFeatures, inFeatures, outFS, "JOIN_ONE_TO_ONE", 
                                spatialOperation, nearDistance, temporalOperation, 
                                nearTime, None, None, None, dataStore)

环境

输出坐标系

将用于分析的坐标系。除非由该参数进行指定,否则将基于输入坐标系完成分析。对于 GeoAnalytics 工具,最终结果将存储于 WGS84 中的时空数据存储之内。

许可信息

  • Basic: 需要 ArcGIS GeoAnalytics Server
  • Standard: 需要 ArcGIS GeoAnalytics Server
  • Advanced: 需要 ArcGIS GeoAnalytics Server

相关主题