步骤:
- 使用Arcpy中的DBSCAN工具对点数据进行聚类。
- 输出聚类结果(聚类数与噪声点数)
👇下面是一个简单的代码示例:
import arcpy
# 设置工作空间
workspace = r'C:\\XXX.gdb'
arcpy.env.workspace = workspace
# 使用dbscan进行批量距离聚类并输出结果(聚类数与噪声点数)
for i in range(10, 301, 10): #此处以搜索距离为变量,从 10m 开始,每次增加 10m 至 300m
print(f"距离 {i}")
arcpy.stats.DensityBasedClustering("In_Features", f"Out_Features_{i}", "DBSCAN", 5, f"{i} Meters") #输出名称后缀增加距离以避免覆写,此处默认最小要素数为5
text = arcpy.GetMessages() # 输出地理处理结果信息
cluster_number = re.search("聚类数 (\\d+)", text)
if cluster_number:
print(f'聚类数 {cluster_number.group(1)}')
noise_element = re.search("噪点要素 (\\d+)", text)
if noise_element:
print(f'噪点要素 {noise_element.group(1)}')
👇参考官方文档:
GetMessages—ArcGIS Pro | 文档
基于密度的聚类 (空间统计)—ArcGIS Pro | 文档