使用 K-Means 聚类器实现非监督分类
// 创建一个点几何,表示要分析的地理位置
var pt = ee.Geometry.Point([118.55, 25.55]);
// 过滤 Landsat 8 图像集合,选择云量最少的图像
var landsat = ee.ImageCollection('LANDSAT/LC08/C02/T1_L2') // 指定 Landsat 8 图像集合
.filterBounds(pt) // 根据定义的点过滤图像集合,只保留包含该点的图像
.filterDate('2023-01-01', '2024-01-01') // 进一步过滤日期范围内的图像
.sort('CLOUD_COVER') // 按云量排序,云量最少的图像排在前面
.first(); // 选择云量最少的第一张图像
// 将地图中心设置为选中的 Landsat 图像位置,并缩放级别为 8
Map.centerObject(landsat, 8);
// 设置可视化参数,用于显示 Landsat 图像
var visParams = {
bands: ['SR_B4', 'SR_B3', 'SR_B2'], // 选择显示的波段(红、绿、蓝)
min: 7000, // 设定最小值,用于拉伸图像对比度
max: 12000 // 设定最大值
};
// 将 Landsat 图像添加到地图上
Map.addLayer(landsat, visParams, 'Landsat 8 image');
// 从 Landsat 图像中创建训练数据集
var training = landsat.sample({
region: landsat.geometry(), // 取样区域为 Landsat 图像的几何形状
scale: 30, // 设置取样的空间分辨率
numPixels: 10000, // 从图像中抽取的像素数量
tileScale: 8 // 增加抽样的处理效率
});
// 实例化 K-Means 聚类器并对训练数据进行训练
var clusterer = ee.Clusterer.wekaKMeans(6).train(training); // 使用 6 个聚类中心
// 使用训练好的聚类器对 Landsat 图像进行聚类
var Kclassified = landsat.cluster(clusterer);
// 用随机颜色显示聚类结果
Map.addLayer(Kclassified.randomVisualizer(), {}, 'K-means classified - random colors');
1890

被折叠的 条评论
为什么被折叠?



