标注 | 说明 | 数据类型 |
目标图层 | 包含目标要素。 目标要素的属性和已连接要素的属性将传递到输出。 | Table View |
连接图层 | 包含连接要素。 连接要素的属性将被连接到目标要素的属性中。 有关连接操作的类型对所连接属性聚合的影响的详细信息,请参阅连接操作(Python 中的 join_operation)参数的说明。 | Table View |
输出数据集 | 包含具有连接要素的目标图层要素的新要素类。 | Feature Class;Table |
连接操作 | 指定当多个连接要素与单个目标要素之间存在同一空间关系时,如何在输出中处理目标图层值和连接图层值之间的连接。
| String |
空间关系 (可选) | 指定将用于空间连接要素的条件。
| String |
空间邻近距离 (可选) |
与目标要素的距离,在此距离内将有可能使用连接要素进行空间连接。 仅当空间关系参数值为平面邻近或测地线邻近时,搜索半径才有效。 | Linear Unit |
时态关系 (可选) | 指定将用于匹配要素的时间条件。
| String |
时态邻近距离 (可选) |
与目标要素的时间距离,其中将考虑使用连接要素来进行空间连接。 时间仅在时态关系参数值为邻近、近前或近后且两个要素均已启用时间时才有效。 | Time Unit |
属性关系 (可选) | 基于属性字段内值的连接要素。 指定目标图层中与连接图层中的属性字段匹配的属性字段。
| Value Table |
汇总字段 (可选) | 将根据指定字段进行计算的统计数据。 | Value Table |
连接条件 (可选) | 将条件应用到指定字段。 将仅连接带有符合这些条件的字段的要素。 例如,如果连接图层中的 HealthSpending 属性比目标图层中的 Income 属性大 20%,则可将连接条件应用到要素。 请使用 Arcade 表达式,例如 $join["HealthSpending"] > $target["Income"] * .2。 | String |
保留所有目标要素 (可选) | 指定是在输出要素类中保留所有目标要素(称为左外连接),还是仅保留与连接要素具有指定关系的目标要素(内部连接)。
| Boolean |
摘要
可根据空间、时态、属性关系或这些关系的某种组合将一个图层的属性连接到另一个图层。
插图
使用情况
空间连接会根据要素的空间位置将输入要素(目标图层与连接图层参数)中的要素(行)相匹配。 时态连接会根据要素的时态关系将输入要素中的要素(行)相匹配。 属性连接将根据字段值将要素进行匹配。
您可以根据空间关系、时态关系、属性关系或上述三者的组合来连接要素。
选项 描述 空间关系
将确定要素是否彼此相连的空间关系。 可用的关系将取决于正在连接的图层的几何类型(点、线或面)。 可用的空间关系如下:
- 相交
- 相等
- 平面邻近 - 使用平面距离
- 测地线邻近 - 使用测地线距离
- 包含
- 位于
- 接触
- 交叉
- 重叠
时态关系
将确定要素是否彼此相连的时态关系。 可用的关系取决于正在连接的图层的时间类型(时刻或间隔)。 可用的时间关系如下:
- 汇合
- 被汇合
- 重叠
- 被重叠
- 期间
- 包含
- 等于
- 结束
- 之后结束
- 开始
- 之后开始
- 相交
- 周边
- 近前
- 近后
属性关系
将确定要素是否彼此相连的属性关系。 如果连接图层中的字段值等于目标图层中的字段值,则会对要素进行匹配。
如果目标要素与连接要素处于不同的坐标系,则将使用目标要素的坐标系。 如果已指定输出坐标系,则两个要素都将投影至输出坐标系,然后进行连接。
如果多个要素与同一目标要素相匹配,则您可以决定是否连接所有匹配要素(一对多连接)或是否将所有匹配要素汇总到一起(一对一连接),具体如下:
- 一对多连接 - 可将连接图层中的所有匹配要素连接到目标图层。 此结果图层将包含目标要素的多个记录。
- 一对一连接 - 可将所有匹配的连接要素与目标图层中的每个要素进行汇总。 只有具备匹配项的要素才会包括在汇总和输出中。 系统将添加已连接要素计数,此外也将添加其他统计数据,如总和、最小值、最大值、范围、平均值、方差和标准差。 默认情况下,仅在输出要素类中保留具有指定关系的目标要素(内部连接)。 如果选中保留所有目标要素,则所有输入目标要素将写入输出要素类(这种情况称为左外连接)。
您可以选择使用连接条件参数来构建表达式以连接要素。 如果指定了表达式,则只会使用符合条件的要素。 例如,使用 $target["Magnitude"] > $join["Explosion"] 表达式时,如果目标要素大于字段名称为 Explosion 的连接要素,则只能通过 Magnitude 字段连接目标要素。 有关详细信息,请参阅 GeoAnalytics Desktop 工具中的 Arcade 表达式。
在运行一对多连接时,输出要素中包括以下字段:
- 目标图层中的所有字段
- 连接图层中的所有字段
如果目标和连接数据集中存在相同的字段名称,则所连接字段将以单词 join 开头(例如 join_fieldname)。
字段名 描述 start_date
该字段表示开始时间,且将在输入的时间设置为时刻或间隔时创建。
end_date
该字段表示结束时间,且将在输入的时间设置为间隔时创建。
除了目标图层中的所有字段之外,在运行一对一连接时,输出要素中还将包含以下字段:
字段名 描述 count
已连接的要素计数。
statistic_fieldname
指定的统计信息将各自创建一个属性字段,并按照以下格式命名:statistic_fieldname。 例如,id 字段的最大偏差和标准偏差为 MAX_id 和 SD_id。
start_date
该字段表示开始时间,且将在输入的时间设置为时刻或间隔时创建。
end_date
该字段表示结束时间,且将在输入的时间设置为间隔时创建。
您可以执行以下一项或多项操作来提高连接要素工具的性能。
- 设置范围环境,以便仅分析感兴趣的数据。
- 使连接条件尽可能具有选择性。 例如,基于同一数据,1 公里邻近连接的运行表现比 5 公里邻近连接要好。
- 添加多个连接条件。 附加连接条件可使连接更具有选择性。 例如,基于同一数据,1 公里和 1 小时邻近连接的运行表现比 1 公里邻近连接要好。
- 应用连接表达式。
- 将本地数据用于分析运行的位置。
类似的分析也可使用分析工具箱中的空间连接工具来完成。
此地理处理工具由 Spark 支持。 分析在您的台式计算机上使用多核并行完成。 有关运行分析的详细信息,请参阅 GeoAnalytics Desktop 工具的注意事项。
运行 GeoAnalytics Desktop 工具时,分析在您的台式计算机上完成。 为获得最佳性能,应在台式计算机上提供数据。 如果使用的是托管要素图层,则建议您使用 ArcGIS GeoAnalytics Server。 如果数据不是本地数据,则工具需要更长的运行时间。 要使用 ArcGIS GeoAnalytics Server 执行分析,请参阅 GeoAnalytics Tools。
参数
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 值之间的连接。
| String |
spatial_relationship (可选) | 指定将用于空间连接要素的条件。
| String |
spatial_near_distance (可选) |
与目标要素的距离,在此距离内将有可能使用连接要素进行空间连接。 仅当 spatial_relationship 参数值为 NEAR 或 NEAR_GEODESIC 时,搜索半径才有效。 | Linear Unit |
temporal_relationship (可选) | 指定将用于匹配要素的时间条件。
| String |
temporal_near_distance (可选) |
与目标要素的时间距离,其中将考虑使用连接要素来进行空间连接。 时间仅在 temporal_relationship 参数值为 NEAR、NEAR_BEFORE 或 NEAR_AFTER 且两个要素均已启用时间时才有效。 | Time Unit |
attribute_relationship [attribute_relationship,...] (可选) | 基于属性字段内值的连接要素。 指定目标图层中与连接图层中的属性字段匹配的属性字段。
| Value Table |
summary_fields [summary_fields,...] (可选) | 将根据指定字段进行计算的统计数据。
| Value Table |
join_condition (可选) | 将条件应用到指定字段。 将仅连接带有符合这些条件的字段的要素。 例如,如果连接图层中的 HealthSpending 属性比目标图层中的 Income 属性大 20%,则可将连接条件应用到要素。 请使用 Arcade 表达式,例如 $join["HealthSpending"] > $target["Income"] * .2。 | String |
keep_all_target_features (可选) | 指定是在输出要素类中保留所有目标要素(称为左外连接),还是仅保留与连接要素具有指定关系的目标要素(内部连接)。
| Boolean |
代码示例
以下独立脚本演示了如何使用 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)