【PostGIS】POSTGIS实现聚类统计提取外轮廓

本文介绍了如何使用PostGIS中的ST_ClusterDBSCAN算法进行地理要素聚类,以及如何结合ST_ConcaveHull函数计算外轮廓,包括凸包和凹包的区别与选择。作者详细展示了在Java程序中实现这些功能的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目需求根据某些条件进行聚类统计,然后返回聚类的外轮廓,这里主要用到POSTGIS的两个算法,一个是聚类统计功能,一个是提取外轮廓的功能。

1. 聚类统计

Postgis主要实现并提供了四种聚类方法,前两个为窗口函数,后两个为聚合函数:

ST_ClusterKMeans – 该函数是窗口函数,主要是用K-means(K均值聚类)算法进行聚类,算法原理比较简单,容易实现,主要适用于点样本数据,如果是多边形则用多边形的中心点计算,只有一个参数K簇,就是事先明确了要把这一堆样本数据聚成K个类,然后去计算一个目标函数达到最优解,因此K值对结果影响比较大,不太好选取,而且该算法而且适合凸的数据集,这也算法容易收敛;

ST_ClusterDBSCAN – 该函数也是窗口函数,主要利用DBSCAN算法对输入的地理要空间素进行聚类,该算法基于密度进行聚类,直觉上更加符合认知,主要是通过地理要素分布的紧密程度决定,同一类别的样本之间是紧密相连的,不同样本是分离的。该算法相对复杂,比较常用,聚类效果较好,。

ST_ClusterIntersecting – 该函数是一个聚合函数,方法比较好理解,顾名思义就是把相交关联关系的地理要素作为一个类簇。具体的函数声明和用法,看官网的例子介绍很容易看懂,也可以拿数据进行测试实验,不是很常用,不做重点;

ST_ClusterWithin – 该函数也是一个聚合函数,也很好理解,顾名思义通过一个距离参数,将距离之内的地理要素聚成一个类别,距离之外的就是非同类。详细可参考官网,也不做重点;

综合自己的需求,采用ST_ClusterDBSCAN函数
函数定义,有三个参数,(窗口函数中的每一个地理要素,搜索半径,最小点数),根据以上分析应该不难理解:

integer ST_ClusterDBSCAN(geometry winset geom, float8 eps, integer minpoints);
例:

SELECT ST_ClusterDBSCAN(geom, eps := 0.000179, minpoints := 2) OVER 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值