欢迎光临散文网 会员登陆 & 注册

arcpy开发实例之POI的DBSCAN聚类

2022-11-11 10:06 作者:夕林泉石  | 我要投稿

# _*_ encoding: utf-8 _*_

import arcpy

arcpy.env.workspace = "d:/temp/poi_yuelu";


# 1.读取poi的x和y坐标并存入数组X

X = []

with arcpy.da.SearchCursor("poi_yuelu",["SHAPE@XY"]) as cursor:

    for row in cursor:

        X.append([row[0][0],row[0][1]]);


# 2. 将X转换为numpy数组

import numpy as np

X = np.array(X);


# 3. 使用sklearn.DBSCAN聚类

from sklearn.cluster import DBSCAN

dbscan = DBSCAN(eps = 50, min_samples = 10);

clustring = dbscan.fit(X);


# 4. 将聚类id写入poi的cid字段

arcpy.management.AddField("poi_yuelu","cid","SHORT");


with arcpy.da.UpdateCursor("poi_yuelu",["fid","cid"]) as cursor:

    i = 0;

    for row in cursor:

        row[1] = clustering.labels_[i];

        i +=1;

        cursor.updateRow(row);


#5. 为每个类簇生成最小约束多边形

arcpy.management.MinimumBoundingGeometry("poi_yuelu","domain.shp","CONVEX_HULL","LIST","cid");



arcpy开发实例之POI的DBSCAN聚类的评论 (共 条)

分享到微博请遵守国家法律