标注 | 说明 | 数据类型 |
目标图层 | 包含目标要素。 会将目标要素中的属性和已连接要素中的属性传递到输出。 | Table View |
连接图层 | 包含连接要素。 连接要素的属性将被连接到目标要素的属性中。 有关连接操作的类型对所连接属性聚合的影响的详细信息,请参阅连接操作参数的说明。 | 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 |
包含距离 (可选) | 指定结果中是否包含空间距离或时间差异。 当连接操作参数值为一对多连接且满足以下任一条件时,此参数处于活动状态:
| Boolean |
距离单位 (可选) | 指定输出要素类中距离值所使用的测量单位。
| String |
摘要
可根据空间、时态和属性关系或这些关系的某种组合将一个图层的属性连接到另一个图层。
插图
使用情况
空间连接根据要素的空间位置对输入要素(目标图层与连接图层参数值)中的要素(行)进行匹配。 时态连接根据要素的时态关系对输入要素中的要素(行)进行匹配。 属性连接根据字段值匹配要素。
可以根据空间关系、时间关系、属性关系或上述三者的组合来连接要素。
选项 描述 空间关系
将确定要素是否彼此相连的空间关系。 可用的关系将取决于正在连接的图层的几何类型(点、线或面)。 可用的空间关系如下:
- 相交
- Equals
- 平面邻近 - 使用平面距离。
- 测地线邻近 - 使用测地线距离。
- 包含
- 位于
- Touches
- 交叉
- 重叠
时态关系
将确定要素是否彼此相连的时态关系。 可用的关系取决于正在连接的图层的时间类型(时刻或间隔)。 可用的时间关系如下:
- 汇合
- 被汇合
- 重叠
- 被重叠
- 期间
- 包含
- Equals
- 结束
- 之后结束
- 开始
- 之后开始
- 相交
- 近邻分析
- 近前
- 近后
属性关系
将确定要素是否彼此相连的属性关系。 如果连接图层中的字段值等于目标图层中的字段值,则会对要素进行匹配。
如果目标要素与连接要素处于不同的坐标系,则将使用目标要素的坐标系。 如果已指定输出坐标系,则两个要素都将投影至输出坐标系,然后进行连接。
如果多个要素与同一目标要素相匹配,则您可以决定是否连接所有匹配要素(连接操作值为一对多连接)或是否将所有匹配要素汇总到一起(连接操作值为一对一连接),具体如下:
- 一对多连接 - 将连接图层中的所有匹配要素连接到目标图层。 此结果图层将包含目标要素的多个记录。
- 一对一连接 - 将所有匹配的连接要素汇总到目标图层中的每个要素。 只有具备匹配项的要素才会包括在汇总和输出中。 系统将添加已连接要素计数,此外也将添加其他统计数据,如总和、最小值、最大值、范围、平均值、方差和标准差。 默认情况下,仅具有指定关系的目标要素才会保留在输出要素类(这称为内部连接)中。 如果选中保留所有目标要素,则所有输入目标要素都将写入输出要素类(这称为左外部连接)。
使用连接条件参数构建表达式,可以连接要素。 如果指定了表达式,则只会使用符合条件的要素。 例如,如果目标要素大于字段名称为 Explosion 的连接要素,则只能使用表达式 $target["Magnitude"] > $join["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
此字段在输入设置为间隔时创建,表示结束时间。
如果勾选了包括距离参数,并且连接操作参数设置为一对多连接,则输出要素中可能包括以下字段:
字段名 描述 distance
目标要素与连接要素之间的距离。 如果空间关系参数设置为平面邻近或测地线邻近,则包括此字段。
距离为 0 表示目标和连接几何相交。 空值表示几何之间的距离大于空间邻近距离参数值。 如果空间关系参数值为平面邻近,则距离值将为平面距离;如果参数值为测地线邻近,则距离值将为测地线距离。 值将以距离单位参数指定的单位表示。 默认距离单位为米。
timegap
目标和连接要素之间的时间差(以毫秒为单位)。 如果时态关系参数设置为邻近、近前或近后,则包括此字段。
差值为 0 表示目标和连接要素在时间上相交。 正值表示目标要素在连接要素之前发生,负值表示连接要素在目标要素之前发生。 空值表示要素未满足连接条件。 例如,要素之间的距离大于时间邻近距离参数值。
可执行以下一项或多项操作来提高连接要素工具的性能。
- 设置范围环境,以便仅分析感兴趣的数据。
- 使连接条件尽可能具有选择性。 例如,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}, {include_distance}, {distance_unit})
名称 | 说明 | 数据类型 |
target_layer | 包含目标要素。 会将目标要素中的属性和已连接要素中的属性传递到输出。 | Table View |
join_layer | 包含连接要素。 连接要素的属性将被连接到目标要素的属性中。 有关连接操作的类型对所连接属性聚合的影响的详细信息,请参阅连接操作参数的说明。 | 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 |
include_distance (可选) | 指定结果中是否包含空间距离或时间差异。 当 join_operation 参数值为 JOIN_ONE_TO_MANY 且满足以下任一条件时,此参数处于活动状态:
| Boolean |
distance_unit (可选) | 指定输出要素类中距离值所使用的测量单位。
| String |
代码示例
以下独立脚本演示了如何使用 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)