DBSCAN+KD-Tree聚类算法 JAVA版本

本文介绍了如何将面状要素转换为点,并利用DBSCAN和KD-Tree算法进行Java聚类。面对ArcGIS自带工具的限制,作者选择了DBSCAN算法,探讨了算法原理并给出了相关资源链接。同时,提到了后续计划研究Python中的dbscan及聚类效果评价方法。
摘要由CSDN通过智能技术生成

最近应老板需求,对面状要素(polygon)根据其距离的远近进行分组/聚类,然后分析比较组间区别以及组内特征。

通过查看网上的介绍,发现对面状要素进行分组/聚类的文章或算法不太多(好吧,我承认我懒,看到比较复杂的算法脑壳就疼),但是对点要素进行聚类的算法相当成熟(K近邻、DBCSAN等等)

emm…于是,我就想能否把面状要素转为点,然后面积作为点的一个属性/权值对其进行聚类呢?

这样做肯定不精确,因为面状要素形状不规则,不同边界到其他面状要素的距离也不同。我这么做一是为了将面积加入到聚类算法中,二是为了简单起见,并不需要特别正确的对面状要素进行分组。
使用ArcGIS的Feature To Point先将面要素转为点,然后给点要素一个权重属性weight,使用字段计算器将面要素的面积赋值给相应的点,最后使用算法对其进行分组。

一开始通过ArcGIS自带的分组分析Grouping Analysis工具进行分类,使用的K近邻聚类方法,这种方法有两个不足:
1、需要指定分组数目,但是这个组的个数我们没法确定
2、当分组数目超过15组时,该工具无法对每类分组进行评估,以找到最合适的分组(虽然可以改工具的代码,调整最大分组数据,但是给我的感觉是没有理论支撑[其实是我调整了最大分组数后脚步运行有问题,懒得调代码了],先作为一个备选方式吧)

后来通过咨询同学,结合网上说的方法,决定使用DBSCAN算法(Density-Based Spatial Clustering

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值