在Google Earth Engine (GEE) 中使用Sentinel-2和GEDI数据进行生物量制图是一个高效的方法,以下是详细的实现流程和技术要点:


1. 数据准备

1.1 GEDI数据
// 加载GEDI L4A数据集
var gedi = ee.ImageCollection("LARSE/GEDI/GEDI04_A_002_MONTHLY")
              .filterDate('2019-01-01', '2023-12-31')  // 根据研究时间筛选
              .filterBounds(studyArea);  // 研究区几何对象

// 提取地上生物量密度(AGBD, Mg/ha)和质量标识
var gediQuality = gedi.filter(ee.Filter.expression('quality_flag >= 0.9'))
                      .select('agbd');

关键参数:

  • agbd: 地上生物量密度(Mg/ha)
  • quality_flag: 数据质量标识(推荐≥0.9)
  • degrade_flag: 数据退化标识(推荐=0)
1.2 Sentinel-2数据
// 加载去云后的Sentinel-2数据
var s2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
           .filterBounds(studyArea)
           .filterDate('2019-01-01', '2023-12-31')
           .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20));

// 计算NDVI并添加到影像属性
var addIndices = function(image) {
  var ndvi = image.normalizedDifference(['B8','B4']).rename('NDVI');
  return image.addBands(ndvi);
};
var s2WithIndices = s2.map(addIndices);

// 合成时序数据(中值合成)
var s2Composite = s2WithIndices.median().clip(studyArea);

常用光谱指数:

  • NDVI: (B8-B4)/(B8+B4)
  • EVI: 2.5*(B8-B4)/(B8+6*B4-7.5*B2+1)
  • NBR: (B8-B12)/(B8+B12)

2. 数据融合

2.1 空间匹配
// 将GEDI点数据与Sentinel-2像元对齐
var gediSamples = gediQuality.map(function(image) {
  return image.reduceRegions({
    collection: image.geometry(),  // GEDI点位置
    reducer: ee.Reducer.first(),
    scale: 10  // Sentinel-2分辨率
  });
}).flatten();
2.2 特征提取
// 从Sentinel-2合成影像中提取特征
var trainingData = s2Composite.sampleRegions({
  collection: gediSamples,
  properties: ['agbd'],
  scale: 10
});

可选特征扩展:

  • 纹理特征(GLCM)
  • 时间序列特征(季节均值、年最大值)
  • 地形特征(使用SRTM数据)

3. 模型构建

3.1 随机森林回归
// 拆分训练集与测试集(70-30比例)
var split = trainingData.randomColumn('random');
var trainingSet = split.filter(ee.Filter.lt('random',0.7));
var testingSet = split.filter(ee.Filter.gte('random',0.7));

// 定义特征波段
var predictors = ['B2','B3','B4','B8','NDVI','B11','B12'];

// 训练随机森林模型
var model = ee.Classifier.smileRandomForest(100)
               .train({
                 features: trainingSet,
                 classProperty: 'agbd',
                 inputProperties: predictors
               });

// 模型验证
var validation = testingSet.classify(model);
var rmse = validation.reduceColumns({
  reducer: ee.Reducer.rmse(),
  selectors: ['agbd', 'classification']
}).get('rmse');
print('RMSE:', rmse);
3.2 可选模型比较
  • Gradient Boosting: ee.Classifier.smileGradientTreeBoost()
  • 神经网络: ee.Classifier.multilayerPerceptron()
  • 线性回归: ee.Classifier.linearRegression()

4. 生物量制图

// 应用模型到整个研究区
var biomassMap = s2Composite.classify(model).rename('AGBD');

// 可视化参数
var visParams = {min:0, max:300, palette:['white','green','darkgreen']};

// 显示结果
Map.addLayer(biomassMap.clip(studyArea), visParams, 'Biomass Map');

后处理建议:

  • 使用 focal 函数进行平滑处理
  • 应用蒙版去除非植被区域
  • 单位转换(如需从 Mg/ha 转换为其他单位)

5. 验证与精度提升

5.1 交叉验证
// 10折交叉验证示例
var folds = trainingData.randomColumn('kfold', 10);
for (var i=0; i<10; i++) {
  var testFold = folds.filter(ee.Filter.eq('kfold', i));
  var trainFold = folds.filter(ee.Filter.neq('kfold', i));
  var tempModel = ee.Classifier.smileRandomForest(50).train(...);
  // 计算每折精度...
}
5.2 误差来源分析
  • GEDI数据空间采样偏差
  • 云污染导致的光学数据缺失
  • 植被类型特异性(建议分生态区建模)

6. 结果导出

// 导出GeoTIFF到Google Drive
Export.image.toDrive({
  image: biomassMap,
  description: 'Biomass_Map',
  region: studyArea,
  scale: 10,
  maxPixels: 1e13
});

技术要点说明

  1. 时空一致性:建议GEDI与Sentinel-2数据时间差<30天
  2. 尺度效应:GEDI足迹(25m)与Sentinel-2(10m)需尺度转换
  3. 不确定性传递:GEDI L4A本身有约20%的误差
  4. 植被饱和问题:对高生物量区(>200 Mg/ha)可考虑雷达数据融合

最新研究显示,结合多时相Sentinel-1雷达数据可提升热带森林区域的制图精度(Zhu et al., 2023)。如果研究区域包含高密度植被,建议尝试融合SAR数据。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐