标注 | 说明 | 数据类型 |
输入点要素 | 将执行基于密度的聚类的点要素。 | Feature Layer |
输出要素 | 将接收聚类结果的输出要素类。 | Feature Class |
聚类方法 | 指定将用于定义聚类的方法。
| String |
每个聚类的最小要素数 | 将视为聚类的最小点数。 点数少于给定数量的聚类将被视为噪点。 | Long |
搜索距离 (可选) | 要考虑的最大距离。 对于聚类方法参数的定义的距离 (DBSCAN) 选项,必须在聚类成员资格的此距离内找到每个聚类的最小要素数参数值。 将至少按此距离来分隔单个聚类。 如果点与聚类中下一最近点的距离大于此距离,则不会将该点包括在聚类中。 对于聚类方法参数的多比例 (OPTICS) 选项,此参数是可选的,并且可用作创建可达图时的最大搜索距离。 对于 OPTICS,结合聚类敏感度参数值的可达图可以确定聚类成员资格。 如果未指定距离,则工具将搜索所有距离,这会增加处理时间。 如果留空,则使用的默认距离将为数据集中找到的最高核心距离,排除前 1% 的核心距离(即最极端的核心距离)。 如果提供时间字段参数值,必须提供搜索距离且不得包括默认值。 | Linear Unit |
聚类敏感度 | 0 到 100 之间的整数,用于确定聚类的紧密度。 值越接近 100,则产生的密集聚类越多。 值越接近 0,则产生的较松散聚类越多。 如果留空,工具将使用 Kullback-Leibler Divergence 找到一个添加更多聚类并不会增加额外信息的敏感度值。 | Long |
时间字段 |
包含数据集中每条记录的时间戳的字段。 此字段的类型必须是日期。 提供参数后,工具将查找在空间和时间上彼此接近的点聚类。 必须提供搜索时间间隔参数值以确定某点如要包含于聚类,其在时间上是否与聚类足够接近。 | Field |
搜索时间间隔 | 用于确定点是否构成空间-时间聚类的时间间隔。 搜索时间间隔包括各点时间的之前和之后的时间,例如围绕一个点的时间间隔为 3 天,则将包括从该点时间之前 3 天到之后 3 天范围内的所有点。
搜索时间间隔不控制生成空间-时间聚类的整体时间跨度。 聚类中各点的时间跨度可以大于搜索时间间隔,只要各个点在聚类中具有搜索时间间隔范围内的相邻要素。 | Time Unit |
插图
使用情况
此工具从输入点要素参数值中提取聚类,并标识所有周围噪点。
提供三个聚类方法参数选项。 定义距离 (DBSCAN) 选项可基于指定搜索距离查找紧密邻近的点聚类。 自调整 (HDBSCAN) 选项可基于聚类概率(或稳定性)查找点聚类,方法与 DBSCAN 类似,不同之处在于使用适用于具有可变密度的聚类的可变距离。 多比例 (OPTICS) 选项可基于至下一个点的最小距离排列输入点。 然后,将构造可达图,并基于要视为聚类的最少点数、搜索距离以及可达图的特征(例如山峰的坡度和高度)获取聚类。
此工具可生成包含新整型字段 CLUSTER_ID 的输出要素类,该字段可显示各个点所属的聚类。 默认渲染基于 COLOR_ID 字段。 将为每个颜色分配多个聚类。 将分配颜色并重复使用,以使每个聚类的外观不同于其邻近聚类。
-
该工具还会创建消息和图表,您可以使用这些内容来了解所标识聚类的特征。 可将鼠标悬停在进度条上、单击弹出按钮或展开地理处理窗格中的消息部分来访问消息。 还可通过地理处理历史访问之前运行基于密度的聚类工具的消息。 可以通过内容窗格访问图表。
有关输出消息和图表的详细信息,以及有关此工具使用的算法的详细信息,请参阅“基于密度的聚类”工作原理。
如果为聚类方法参数选择自调整 (HDBSCAN),则输出要素类还将包含以下字段:PROB,表示点属于其所分配组的概率;OUTLIER,指定点可能是其自己聚类中的异常值(值越高,则该点是异常值的可能性越大);EXEMPLAR,表示各个聚类中最为典型或最具代表性的点。
如果为聚类方法参数选择多比例 (OPTICS),则输出要素类还将包含字段 REACHORDER(表示针对分析排列输入点要素值的方法)和 REACHDIST(表示每个点与其未访问的最邻近要素之间的距离)。
对于聚类方法参数的定义的距离 (DBSCAN) 和多比例 (OPTICS)选项,则默认的搜索距离参数值为数据集中找到的最高核心距离,不包括前 1% 的核心距离(即排除最极端的核心距离)。
对于聚类方法参数的定义的距离 (DBSCAN) 和多比例 (OPTICS)选项,可以在时间字段参数中提供各个点的时间。 提供参数后,工具将查找在空间和时间上彼此接近的点聚类。 必须提供搜索时间间隔参数以确定某点如要包含于聚类,其在时间上是否与聚类足够接近。
- 对于定义的距离 (DBSCAN) 选项,在搜索聚类成员时,必须在搜索距离和搜索时间间隔值中找到每个聚类的最小要素数参数值,方可形成聚类。
- 对于多比例 (OPTICS) 选项,当点计算其核心距离、搜索指定搜索距离值范围内的所有相邻要素距离并计算可达距离时,搜索时间间隔值之外的所有点都将被排除。
当提供时间字段参数值时,输出要素类将包括“每个聚类的时间跨度”图表,显示各个空间-时间聚类的时间跨度。 还将包括四个附加字段:Mean Time、Start Time、End Time 和 Time Exaggeration。 输出要素类已启用时间,建议将时间设置为 Mean Time 字段,以使用时间滑块在时间范围内可视化聚类。 也可以通过将 Time Exaggeration 设置为要素高程来在 3D 场景中显示时空模式。
搜索时间间隔参数不控制生成空间-时间聚类的整体时间跨度。 例如,使用 3 天的搜索时间间隔可能得到点的跨度为 10 天或更多的集群。 这是由于搜索时间间隔仅用于确定单个点是否包含于聚类。 多个点组成聚类后,聚类的整体时间跨度可能大于搜索时间间隔。 这类似于空间聚类可能大于搜索距离值,只要各个点在聚类中具有比搜索距离更近的相邻要素即可。
-
如果未投影输入要素值(即,坐标单位为度、分和秒),或者将输出坐标系设置为地理坐标系,则采用弦测量方法计算距离。 使用弦距离测量法是因为此方法不仅计算速度快,而且提供真实测地线距离的良好估测,至少对于彼此 30 度以内的点是这样。 弦距离是基于扁椭球体计算的。 给定地球表面上的任意两点,两点之间的弦距离是从三维地球穿过然后连接该两点的一条线的长度。 弦距离报表将以米为单位。
警告:
如果研究区域超过 30 度,则最佳做法为投影数据。 弦距离无法准确估算超出 30 度的测地线距离。
此工具在其计算中将包括 z 值。 如果存在 z 值,则结果将为 3D 模式。
此工具支持并行处理,默认情况下使用 50% 的可用处理器。 处理器数目可以通过使用并行处理因子环境增加或减少。
参数
arcpy.stats.DensityBasedClustering(in_features, output_features, cluster_method, min_features_cluster, {search_distance}, cluster_sensitivity, time_field, search_time_interval)
名称 | 说明 | 数据类型 |
in_features | 将执行基于密度的聚类的点要素。 | Feature Layer |
output_features | 将接收聚类结果的输出要素类。 | Feature Class |
cluster_method | 指定将用于定义聚类的方法。
| String |
min_features_cluster | 将视为聚类的最小点数。 点数少于给定数量的聚类将被视为噪点。 | Long |
search_distance (可选) | 要考虑的最大距离。 对于 cluster_method 参数的 DBSCAN 选项,必须在聚类成员资格的此距离内找到 min_features_cluster 参数值。 将至少按此距离来分隔单个聚类。 如果点与聚类中下一最近点的距离大于此距离,则不会将该点包括在聚类中。 对于 cluster_method 参数的 OPTICS 选项,此参数是可选的,并且可用作创建可达图时的最大搜索距离。 对于 OPTICS,结合 cluster_sensitivity 参数值的可达图可以确定聚类成员资格。 如果未指定距离,则工具将搜索所有距离,这会增加处理时间。 如果留空,则使用的默认距离将为数据集中找到的最高核心距离,排除前 1% 的核心距离(即最极端的核心距离)。 如果提供 time_field 参数值,必须提供搜索距离且不得包括默认值。 | Linear Unit |
cluster_sensitivity | 0 到 100 之间的整数,用于确定聚类的紧密度。 值越接近 100,则产生的密集聚类越多。 值越接近 0,则产生的较松散聚类越多。 如果留空,工具将使用 Kullback-Leibler Divergence 找到一个添加更多聚类并不会增加额外信息的敏感度值。 | Long |
time_field |
包含数据集中每条记录的时间戳的字段。 此字段的类型必须是日期。 提供参数后,工具将查找在空间和时间上彼此接近的点聚类。 必须提供 search_time_interval 参数值以确定某点如要包含于聚类,其在时间上是否与聚类足够接近。 | Field |
search_time_interval | 用于确定点是否构成空间-时间聚类的时间间隔。 搜索时间间隔包括各点时间的之前和之后的时间,例如围绕一个点的时间间隔为 3 天,则将包括从该点时间之前 3 天到之后 3 天范围内的所有点。
搜索时间间隔不控制生成空间-时间聚类的整体时间跨度。 聚类中各点的时间跨度可以大于搜索时间间隔,只要各个点在聚类中具有搜索时间间隔范围内的相邻要素。 | Time Unit |
代码示例
以下 Python 窗口脚本演示了如何使用 DensityBasedClustering 函数。
import arcpy
arcpy.env.workspace = r"C:\Analysis"
arcpy.DensityBasedClustering_stats("Chicago_Arson", "Arson_HDB", "HDBSCAN", 15)
以下独立 Python 脚本演示了如何使用 DensityBasedClustering 函数。
# Clustering crime incidents in a downtown area using the DensityBasedClustering
# function
# Import system modules
import arcpy
import os
# Overwrite existing output, by default
arcpy.env.overwriteOutput = True
# Local variables...
workspace = r"E:\working\data.gdb"
arcpy.env.workspace = workspace
# Run Density-based Clustering with the HDBSCAN Cluster Method using a minimum
# of 15 features per cluster
arcpy.stats.DensityBasedClustering("Chicago_Arson", "Arson_HDB", "HDBSCAN", 15)
# Run Density-based Clustering again using OPTICS with a Search Distance and
# Cluster Sensitivity to create tighter clusters
arcpy.stats.DensityBasedClustering("Chicago_Arson", "Arson_Optics", "OPTICS",
15, "1200 Meters", 70)
以下 Python 独立脚本演示了如何使用包含时间的 DensityBasedClustering 函数。
# The following stand-alone Python script demonstrates how to use
# the DensityBasedClustering function with time to find space-time clusters.
# Time field and Search time interval only supported by DBSCAN and OPTICS methods
# Import system modules
import arcpy
import os
# Overwrite existing output, by default
arcpy.env.overwriteOutput = True
# Local variables...
workspace = r"E:\working\data.gdb"
arcpy.env.workspace = workspace
# Run Density-based Clustering with DBSCAN Cluster Method, and choose 50 as the minimum
# features per cluster, 200 meter search distance, and 10 minute search time interval
arcpy.stats.DensityBasedClustering("New_York_Taxi_PickingUp", "New_York_Taxi_DBSCAN_Time",
"DBSCAN", 50, "200 Meters", None, "Pickup_Time", "10 Minutes")
# Run Density-based Clustering with OPTICS Method, and choose 50 as the minimum
# of features per cluster, 200 meter search distance, and 10 minute search time interval.
# Using 15 as the cluster sensitivity to create a higher number of dense clusters
arcpy.stats.DensityBasedClustering("New_York_Taxi_PickingUp", "New_York_Taxi_OPTICS_Time",
"OPTICS", 50, "200 Meters", 15, "Pickup_Time", "10 Minutes")