GEE7:逐月NDVI最大值合成(获取CSV数据)

逐月NDVI最大值合成

MOD13Q1逐月NDVI最大值合成

var roi=table.geometry();
// 调用MODIS的NDVI数据集250m
var dataset = ee.ImageCollection('MODIS/061/MOD13Q1')
                  // 筛选研究时间和覆盖研究区域的影像
                  .filter(ee.Filter.date('2005-01-01', '2013-01-01'))
                  .select('NDVI')
                  // 对NDVI波段进行0.0001比例缩放,计算kndvi
                  .map(function(image){
                    return image.multiply(0.0001).pow(2).tanh().set('system:time_start',image.get('system:time_start'))
                                .clip(table)
                  });

var kndviVis = {
   min: -0.2,
   max: 1.0,
  palette: [
    'FFFFFF', 'CE7E45', 'DF923D', 'F1B555', 'FCD163', '99B718', '74A901',
    '66A000', '529400', '3E8601', '207401', '056201', '004C00', '023B01',
    '012E01', '011D01', '011301'
  ],
};
Map.centerObject(table, 10);
Map.addLayer(dataset, kndviVis, 'kNDVI');

// 2005-2013年kNDVI每月最大值合成
var years = ee.List.sequence(2005, 2013);
var months = ee.List.sequence(1, 12);
var monthly_max =  ee.ImageCollection.fromImages(
  years.map(function (y) {
    return months.map(function(m) {
    return dataset.filter(ee.Filter.calendarRange(y,y, 'year')).filter(ee.Filter.calendarRange(m, m, 'month')).max().set('year', y).set('month', m).set('system:time_start', ee.Date.fromYMD(y, m, 1));
    });
  }).flatten()
);
Map.addLayer(monthly_max.mean().clip(table), kndviVis, 'yearly_mean');
print('2005-2013年月最大值时间序列',ui.Chart.image.series(monthly_max, table, ee.Reducer.mean(), 10000));

// 输出每年的每月合成的NDVI最大值
years.evaluate(function(yearsList) {
  yearsList.forEach(function(year) {
    months.evaluate(function(monthsList) {
      monthsList.forEach(function(month) {
        var image = monthly_max
          .filter(ee.Filter.eq('year', year))
          .filter(ee.Filter.eq('month', month))
          .first();
        var description = 'NDVI_max_' + year + '_' + month;
        
        Export.image.toDrive({
          image: image,
          description: description,
          folder: "2005-2013_monthly_max",
          scale: 250,
          crs: "EPSG:4326",
          region: roi,
          maxPixels: 1e13
        });
      });
    });
  });
});

// // 输出每月合成的NDVI最大值
// monthly_max.aggregate_array('month')
//           .evaluate(function (months) {
//                   months.forEach(function (month) {
//                       var image = monthly_max
//                           .filterMetadata('month', 'equals', month)
//                           .first()
//                       var description = 'NDVI_max-'+ '2020_' + month
//             Export.image.toDrive({
//               image: image,
//               description: description,
//               folder:"2005-2013_monthly_max",
//               scale: 250,
//               crs: "EPSG:4326",
//               region: table,
//               maxPixels: 1e13,
//             });      
//     })
// })


//将2005-2013全年月最大值的平均值结果导出
Export.image.toDrive({
  image: monthly_max.mean(),
  description: '2020_yearly_mean',
  folder: 'AVHRR_NDVI',
  crs: 'EPSG:4326',
  fileFormat:'GeoTIFF',
  region: table,
  scale: 250,
  maxPixels: 1e13,
})

注意分辨率的问题,ee.reducer()

2005-2013年月最大值时间序列 :
在这里插入图片描述

长沙市2005-2013年平均最大NDVI影像:

在这里插入图片描述

CSV数据导出:
在这里插入图片描述

  • 10
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
gee python 是 Google Earth Engine 提供的 Python API,可以方便地使用 Google Earth Engine 平台中的遥感数据和功能。下面是一种在 gee python 中按年逐月提取 NDVI 的方: ```python # 引入必要的库 import ee import datetime # 初始化 ee python API ee.Initialize() # 定义一个区域(例如一个地理范围的边界) region = ee.Geometry.Rectangle([xmin, ymin, xmax, ymax]) # 定义起始年份和结束年份 start_year = 2010 end_year = 2020 # 定义月份列表 months = range(1, 13) # 从1到12,表示12个月 # 遍历年份和月份,提取 NDVI 数据 for year in range(start_year, end_year + 1): for month in months: # 将年份和月份转换为日期对象 date = datetime.date(year, month, 1) # 构建一个 ee.Date 对象 ee_date = ee.Date(date.isoformat()) # 构建一个 ee.Image 对象,表示指定日期的影像 image = ee.ImageCollection("MODIS/006/MOD13Q1") \ .filterBounds(region) \ .filterDate(ee_date, ee_date.advance(1, 'month')) \ .select('NDVI') \ .mean() # 每个月的 NDVI 取平均值 # 将影像导出为 GeoTIFF 格式 task = ee.batch.Export.image.toDrive(image=image, description='NDVI_' + str(year) + '_' + str(month), folder='export_folder', fileNamePrefix='NDVI_' + str(year) + '_' + str(month), region=region, scale=1000) task.start() print('任务已创建,请前往 Google Drive 中的指定文件夹查看导出的数据。') ``` 这段代码通过遍历年份和月份,针对每个月提取给定区域内的 MODIS NDVI 数据,并将结果导出为 GeoTIFF 格式。你需要将 `xmin`、`ymin`、`xmax` 和 `ymax` 替换为你感兴趣的地理范围的具体边界值,将导出保存的文件夹路径替换为你希望保存数据的目录。数据导出的链接将通过电子邮件发送给你。 以上是一种在 gee python 中按年逐月提取 NDVI 数据的方,希望对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jackson的生态模型

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值