在Turf中,clustersKmeans
函数用于对点进行K均值聚类分析。
points
:必选,点集合,用于进行聚类分析。
numberOfClusters
:必选,分成的簇的数量。
options
:可选,用于指定其他参数,包括以下属性:
iterations
: 可选,默认为100,指定聚类算法进行迭代的次数。返回值是一个对象,其中包含了每个聚类中心点的特征值。
具体来说,返回值的数据结构如下:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"cluster": 1
},
"geometry": {
"type": "Point",
"coordinates": [x, y]
}
},
{
"type": "Feature",
"properties": {
"cluster": 2
},
"geometry": {
"type": "Point",
"coordinates": [x, y]
}
}
...
]
}
其中,每个Feature对象的properties.cluster
表示该点所属的簇的编号。
var points = turf.randomPoint(100, {bbox: [0, 30, 10, 40]});
var numberOfClusters = 5;
var clustered = turf.clustersKmeans(points, numberOfClusters);
// 将聚类中心点的颜色值设置为红色
clustered.features.forEach(function(cluster, index){
cluster.properties["marker-color"] = colors[index % colors.length];
});
L.geoJSON(clustered).addTo(map);
运行上述代码后,效果如下图所示: