对点集进行密度聚类,返回每个点所属的聚类类别。
命名空间:
SuperMap.Data程序集: SuperMap.Data (in SuperMap.Data)
版本: dll
语法
C# |
---|
public static int[] AggregatePoints( Point2Ds points, PrjCoordSys prjCoordSys, double distance, Unit unit, int minPilePointCount ) |
参数
- points
- Type: SuperMap.Data..::.Point2Ds
输入的点集合。
- prjCoordSys
- Type: SuperMap.Data..::.PrjCoordSys
点集合的空间参考坐标系,如果为null,则默认为平面坐标系。
- distance
- Type: System..::.Double
密度聚类半径。
- unit
- Type: SuperMap.Data..::.Unit
密度聚类半径的单位。如果空间参考坐标系prjCoordSys无效,此参数也无效。
- minPilePointCount
- Type: System..::.Int32
密度聚类点数目阈值,必须大于等于2。阈值越大表示能聚类为一簇的条件越苛刻。推荐值为4。
返回值
聚类成功返回每个点所属的聚类类别,从1开始,0为无效类别。备注
对点集合进行空间位置的聚类,使用密度聚类方法 DBSCAN,它能将具有足够高密度的区域划分为簇,并可以在带有噪声的空间数据中发现任意形状的聚类。它定义簇为密度相连的点的最大集合。DBSCAN 使用阈值 e 和 MinPts 来控制簇的生成。其中,给定对象半径 e 内的区域称为该对象的 e一邻域。如果一个对象的 e一邻域至少包含最小数目 MinPtS 个对象,则称该对象为核心对象。给定一个对象集合 D,如果 P 是在 Q 的 e一邻域内,而 Q 是一个核心对象,我们说对象 P 从对象 Q 出发是直接密度可达的。DBSCAN 通过检查数据中每个点的 e-领域来寻找聚类,如果一个点 P 的 e-领域包含多于 MinPts 个点,则创建一个以 P 作为核心对象的新簇,然后,DBSCAN反复地寻找从这些核心对象直接密度可达的对象并加入该簇,直到没有新的点可以被添加。