代码通过建立MODIS树木覆盖率数据(250m)与Landsat8影像之间的非线性回归生成了30m分辨率的树木覆盖率数据
(详细思路见注释)
// 定义研究区的矢量多边形
var wuyishan = ee.Geometry.Polygon(
[
[
[118.55, 25.55],
[118.55, 25.05],
[119.05, 25.05],
[119.05, 25.55]
]
], null, false);
// 将地图中心定位到研究区,缩放级别为9
Map.centerObject(wuyishan, 9);
// 导入MODIS MOD44B图像集合
var mod44b = ee.ImageCollection('MODIS/006/MOD44B');
// 通过过滤图像集合,仅获取2020年的图像,并选择树木覆盖百分比波段
var percentTree2020 = mod44b.filterDate('2020-01-01', '2021-01-01').first().clip(wuyishan).select('Percent_Tree_Cover');
// 在控制台打印2020年的图像信息以供检查
print('2020 Image', percentTree2020);
// 将2020年的树木覆盖百分比图层添加到地图上
Map.addLayer(percentTree2020, {
max: 100
}, 'Percent Tree Cover');
// 导入Landsat 8原始图像集合
var landsat8_raw = ee.ImageCollection('LANDSAT/LC08/C02/T1_RT');
// 过滤Landsat 8图像集合,只获取位于研究区的图像,并在特定时间范围内
var landsat8filtered = landsat8_raw.filterBounds(wuyishan.centroid({
'maxError': 1
}))
.filterDate('2020-01-01', '2020-4-30').sort('CLOUD_COVER').first();
// 在控制台打印过滤后的Landsat 8图像以供检查
print('Landsat8 filtered', landsat8filtered);
// 设置可视化参数以显示Landsat 8图像
var visParams = {
bands: ['B4', 'B3', 'B2'], // 使用红、绿、蓝波段
max: 16000
};
// 将Landsat 8图像图层添加到地图上
Map.addLayer(landsat8filtered, visParams, 'Landsat 8 Image');
// 组装自变量,即Landsat 8的波段
var predictionBands = ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B10', 'B11'];
// 开始非线性回归
// 创建训练数据堆栈
var trainingImageCART = ee.Image(landsat8filtered.select(predictionBands)).addBands(percentTree2020);
// 从选择的预测波段中创建一个图像,并将2020年的树木覆盖百分比作为一个新波段添加
// 采样训练数据堆栈。
var trainingData = trainingImageCART.sample({
region: wuyishan, // 指定采样区域为Turin
scale: 30, // 指定采样的空间分辨率为30米
numPixels: 1500, // 从区域中随机抽取1500个像素用于训练
seed: 5 // 设置随机种子以确保可重复性
});
// 查看CART训练数据,在控制台输出训练数据的信息,便于检查数据是否正确
print('CART training data', trainingData);
// 运行CART回归
// .setOutputMode('REGRESSION'):设置输出模式为回归(而不是分类)。这表示模型将预测连续值(如树木覆盖率),而不是类别标签
var cartRegression = ee.Classifier.smileCart().setOutputMode('REGRESSION').train({
features: trainingData, // 使用前面采样得到的训练数据
classProperty: 'Percent_Tree_Cover', // 指定目标属性为'Percent_Tree_Cover'
inputProperties: predictionBands // 指定输入特征为预测波段
});
// 基于CART回归创建树木覆盖的预测
var cartRegressionImage =
landsat8filtered.select(predictionBands).classify(cartRegression, 'cartRegression');
// 使用训练好的CART回归模型对Landsat 8图像进行分类,以预测树木覆盖率,并将结果命名为'cartRegression'
// 将预测结果添加到地图上进行可视化。
Map.addLayer(cartRegressionImage, {
min: 0, // 设置可视化的最小值为0
max: 100 // 设置可视化的最大值为100
}, 'CART regression'); // 图层名称为'CART regression'
524

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



