基于GEE的非线性回归实现树木覆盖率预测

代码通过建立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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值