当前位置: 首页 > article >正文

GEE21:基于MODIS数据获取逐年GPP、EVI和FVC数据

逐年GPP、EVI和FVC获取

  • 1. 逐年GPP获取
  • 2. 逐年EVI获取
  • 3.逐年FVC获取

1. 逐年GPP获取

// 设置感兴趣区域
var geometry = table.geometry();
Map.centerObject(geometry, 5);
Map.addLayer(geometry, {color: "black"}, "ROI")

// 加载 MODIS/006/MOD17A2H 数据集
var dataset = ee.ImageCollection("MODIS/006/MOD17A2H").select('Gpp'); 

var gppVis = {
  min: 0,
  max: 600,
  palette: ['bbe029', '0a9501', '074b03'],
};
Map.addLayer(dataset.filterBounds(geometry), gppVis, 'GPP');

// 定义起始年份和结束年份
var startYear = 2000;
var endYear = 2022;

// 定义一个函数用于按年合成并导出影像
var exportYearlyComposite = function(year) {
  year = ee.Number(year);

  // 过滤特定年份的影像集合
  var yearCollection = dataset.filterBounds(geometry)
                       .filter(ee.Filter.calendarRange(year, year, 'year'));

  // 合成影像
  var yearImage = yearCollection.mean().multiply(0.0001).clip(geometry);

  // 设置导出参数
  var exportParams = {
    image: yearImage.toFloat(),
    description: 'REG_modis_gpp_yearly_' + year.getInfo(),
    folder: 'evi',
    region: geometry,
    scale: 500,
    crs: "EPSG:4326",
    maxPixels: 1e13,
  };

  // 导出影像
  Export.image.toDrive(exportParams);
  print(exportParams)
  print(year)
  print(yearCollection)
};

// 遍历每个年份并导出影像
for (var year = startYear; year <= endYear; year++) {
  exportYearlyComposite(year);
}

2. 逐年EVI获取

// 设置感兴趣区域
var geometry = table.geometry();
Map.centerObject(geometry, 5);
Map.addLayer(geometry, {color: "black"}, "ROI")

// 加载 MODIS/006/MOD17A2H 数据集
var dataset = ee.ImageCollection("MODIS/061/MOD13A1").select('EVI'); 

var gppVis = {
  min: 0,
  max: 600,
  palette: ['bbe029', '0a9501', '074b03'],
};
Map.addLayer(dataset.filterBounds(geometry), gppVis, 'EVI');

// 定义起始年份和结束年份
var startYear = 2000;
var endYear = 2022;

// 定义一个函数用于按年合成并导出影像
var exportYearlyComposite = function(year) {
  year = ee.Number(year);

  // 过滤特定年份的影像集合
  var yearCollection = dataset.filterBounds(geometry)
                       .filter(ee.Filter.calendarRange(year, year, 'year'));

  // 合成影像
  var yearImage = yearCollection.mean().multiply(0.0001).clip(geometry);

  // 设置导出参数
  var exportParams = {
    image: yearImage.toFloat(),
    description: 'REG_modis_evi_yearly_' + year.getInfo(),
    folder: 'evi',
    region: geometry,
    scale: 500,
    crs: "EPSG:4326",
    maxPixels: 1e13,
  };

  // 导出影像
  Export.image.toDrive(exportParams);
  print(exportParams)
  print(year)
  print(yearCollection)
};

// 遍历每个年份并导出影像
for (var year = startYear; year <= endYear; year++) {
  exportYearlyComposite(year);
}

3.逐年FVC获取

  植被覆盖度作为全球气候变化模型和描述生态系统的重要参数,通过有效获取植被进行光合作用面积的大小以及植被生长的茂盛程度,主要表现为地表植被的覆盖状态。植被覆盖度的计算采用目前较为成熟的算法—像元二分模型,将所有像元视为混合像元,分为土壤和植被两个部分,植被覆盖度计算方法如下:

在这里插入图片描述

  式中,FVC 为像元的植被覆盖度;EVIv 为研究区所有像元中 EVI 最大值,即纯植被像元的 EVI 值;EVIs 为研究区所有像元中 EVI 最小值,即裸土的 EVI 值。考虑遥感影像受大气环境、地表粗糙度和植被类型等因素的影响,本研究通过对研究区范围内像元的 EVI 进行统计,截取置信区间累计频率在 5%和 95%处对应的 EVI 值分别为 EVI 的最小值与最大值,对应上式中的 EVIs 和 EVIv,从而得到研究区植被覆盖度分布数据。

var roi = table.geometry();
Map.addLayer(roi, {'color':'blue'}, 'StudyArea');
Map.centerObject(roi, 6);

// 像元二分模型计算计算FVC
function calFVC(BestVI,region,scale){
    var num = BestVI.reduceRegion({
      reducer:ee.Reducer.percentile([5,95]),
      geometry:region,
      scale:scale,
      maxPixels:1e13
    });
    var min = ee.Number(num.get("NDVI_p5"));
    var max = ee.Number(num.get("NDVI_p95"));
    var greaterPart = BestVI.gt(max);
    var lessPart = BestVI.lt(min);
    var middlePart =ee.Image(1).subtract(greaterPart).subtract(lessPart);
    var tempf1=BestVI.subtract(min).divide(max.subtract(min));
    var FVC=ee.Image(1).multiply(greaterPart).add(ee.Image(0).multiply(lessPart))
                      .add(tempf1.multiply(middlePart));
    return FVC.rename('FVC');
}

var start_year = 2000
var end_year = 2022

for(var i = start_year; i <= end_year; i++){
    var start_date = (i) + '-05-01';
    var end_date   = (i + 1) + '-10-01';
    print("Time frame: ", start_date + "---" + end_date)
    
    // get image collection
    var dataset = ee.ImageCollection("MODIS/061/MOD13A1")
                    .filterBounds(roi)
                    .filterDate(start_date, end_date)
                    .select('EVI');
                    
    var bestEVI = dataset.mean().clip(roi).multiply(0.0001);
    print(bestEVI,i+'_year_'+i+'_bestEVI_Year_mean')

    var EVIVis = {
      min: -0.2,
      max: 0.5,
      palette: ['bbe029', '0a9501', '074b03'],
    };
    Map.addLayer(bestEVI, EVIVis, 'EVI'+i);

    //calculate the 5% and 95% num of the image
    var num =bestEVI.reduceRegion({
          reducer:ee.Reducer.percentile([5,95]),
          geometry:roi,
          scale:500,
          maxPixels:1e13
        });
    print("num",num);
    
    var min = ee.Number(num.get("EVI_p5"));
    var max = ee.Number(num.get("EVI_p95"));
    print("min",min);
    print("max",max)
    
    //quantile and combine
    var greaterPart = bestEVI.gt(max);
    var lessPart    = bestEVI.lt(min);
    var middlePart  =ee.Image(1).subtract(greaterPart).subtract(lessPart); // get the middle part
    //var mask=bestNDVI.gt(mim).add(bestNDVI.lt(min));
    //var middlePart=bestNDVI.updateMask(mask);
        
    //calculate FVC
    var tempf1=bestEVI.subtract(min).divide(max.subtract(min));
    //ee.Image(constant): creat a constatnt image
    var FVC=ee.Image(1).multiply(greaterPart)
                  .add(ee.Image(0).multiply(lessPart))
                  .add(tempf1.multiply(middlePart));
    Map.addLayer(FVC,{},"FVC" + i);

    // export to drive
    Export.image.toDrive(
      {
        image: FVC.toFloat(),
        description: 'modis_fvc_yearly_' + i,
        folder: 'fvc',
        region: roi,
        scale: 500,
        crs: "EPSG:4326",
        maxPixels: 1e13,
      })
}


http://www.kler.cn/news/135295.html

相关文章:

  • 数据结构——栈与队列
  • 将Agent技术的灵活性引入RPA,清华等发布自动化智能体ProAgent
  • 【Qt开发流程之】布局管理
  • Linux安装RabbitMQ详细教程
  • mysql使用--子查询
  • 使用量子玻尔兹曼机推进机器学习:新范式
  • 自然语言处理:Transformer和GPT
  • 数智赋能,众创众治|易知微为“浙江省数字监管应用建模技能竞赛”提供技术支撑!
  • git使用记录
  • 大数据架构
  • pipeline + node +jenkins+kubernetes部署yarn前端项目
  • Qt给控件添加图片
  • 牛客--求最小公倍数python
  • 动手学深度学习——循环神经网络的从零开始实现(原理解释+代码详解)
  • python绘图常见问题及解决方法总结
  • C编译环境和预处理(非常详细,建议收藏)
  • 【智能家居】5、主流程设计以及外设框架编写与测试
  • 截取某个元素前面的数字
  • 算法必刷系列之位运算
  • 深度学习系列53:mmdetection上手
  • 目标检测标注工具AutoDistill
  • RK3588平台开发系列讲解(项目篇)嵌入式AI的学习步骤
  • UML统一建模语言
  • rk3588编译lunch出错
  • 广州华锐互动VRAR:利用VR开展刑事案件公安取证培训,沉浸式体验提升实战能力
  • 第十一周任务总结
  • mysql无法访问故障排除步骤
  • 【Zabbix】Zabbix Agent 2在Ubuntu/Debian系统上的安装
  • 事务隔离级别和MVCC
  • 【开题报告】基于uni-app的汽车租赁app的设计与实现