GEE:如何批量处理并下载指定时间范围的月尺度NDVI数据集(MOD09GA为例)

简介: GEE:如何批量处理并下载指定时间范围的月尺度NDVI数据集(MOD09GA为例)

01 说明

源码链接:https://code.earthengine.google.com/4f02959684e1ad8bd70df97175540b89

这里仅说明如何查找GAUL数据集的各个行政区划的属性信息,特别是行政区划的名称.

var fvLayer = ui.Map.FeatureViewLayer('FAO/GAUL/2015/level1_FeatureView');
var visParams = {
  color: '00909F',
  fillColor: 'b5ffb4',
  opacity: 1,
  width: 1,
  pointSize: 1
};
fvLayer.setVisParams(visParams);
fvLayer.setName('First Level Administrative Units');
Map.setCenter(7.82, 49.1, 4);
Map.add(fvLayer);

运行上述代码,通过显示在图层上的各个行政区划,将鼠标状态切换到Inspector,点击指定区域获取该位置的行政区划要素的属性信息。操作如下:


02 完整代码

/*
该程序用于获取指定时间范围的MOD09GA数据集的月尺度NDVI产品
*/
// 定义日期范围
var start_date = '2000-02-01';  // 必须以一号结尾
var end_date = '2020-12-31';
var roi_name = 'Sichuan Sheng';
// 定义云和水体掩膜函数
function maskCloudAndWater(image) {
  var QA = image.select('QC_500m');
  // 创建一个空的mask,初始值为1(即所有像素都不被掩膜覆盖)
  var mask = ee.Image.constant(1);
  // 遍历每个波段的数据质量标识
  for (var i = 0; i < 2; i++) {  // 因为我选取了两个波段进行ndvi的计算
    // 计算当前波段的数据质量标识的起始位(是从2开始)
    var startBit = 2 + i * 4;
    // 提取当前波段的数据质量标识
    var bandQuality = QA.rightShift(startBit).bitwiseAnd(15);
    // 如果数据质量标识为15,说明该像素可能被云或深海覆盖,需要被掩膜覆盖
    mask = mask.min(bandQuality.neq(15));  // min取两者间小的那个值,逐像元
  }
  // 应用掩膜
  return image.updateMask(mask);
}
// 定义获取日期列表的函数
function month_list(start_date, end_date) {
  // 将字符串转换为ee.Date对象
  var startDate = ee.Date(start_date);
  var endDate = ee.Date(end_date);
  // 计算总共有多少个月
  var diff = endDate.difference(startDate, 'month').round();
  // 创建每个月的开始和结束日期的列表
  var dates = ee.List.sequence(0, diff.subtract(1)).map(function (n) {
    var start = startDate.advance(n, 'month');
    var end = start.advance(1, 'month').advance(-1, 'day');
    return [start.format('YYYY-MM-dd'), end.format('YYYY-MM-dd')];
  });
  return dates
}
// 定义地理空间范围(四川省)
// var roi = ee.FeatureCollection('projects/ee-chaoqiezione/assets/china_admin_province')
// roi = roi.filter(ee.Filter.eq('省', roi_name));
var roi = ee.FeatureCollection("FAO/GAUL/2015/level1")
  .filter(ee.Filter.eq('ADM1_NAME', roi_name));
Map.addLayer(roi.style({fillColor: "00000000"}), {width: 2}, roi_name)
Map.centerObject(roi, 6)
// 生成日期列表
var dates = month_list(start_date, end_date);
dates.evaluate(function(dates) {
  dates.map(function(date){
    var start = ee.Date(date[0]);
    var stop = ee.Date(date[1]);
    // 加载MODIS数据根据日期和地理范围进行筛选
    var modis_ndvi = ee.ImageCollection("MODIS/061/MOD09GA")
      .filterDate(start, stop)
      .filterBounds(roi)
      .select(['sur_refl_b02', 'sur_refl_b01', 'QC_500m'])
      .map(function (img) {
        img = maskCloudAndWater(img);  // 水体和云掩膜
        // img = img.add(0.0001)  本应进行单位换算, 但是仅仅计算ndvi时会约掉,为了减小计算量这里不进行
        return img.normalizedDifference(['sur_refl_b02', 'sur_refl_b01']).rename('ndvi')  // 计算ndvi
      })
      .mean().clip(roi).unmask(-9999)
    modis_ndvi = modis_ndvi.set({name: ee.String(start.format('YYYY-MM-dd'))});
    Export.image.toDrive({
      image: modis_ndvi.select("ndvi"),
      region: roi.geometry(),
      scale:500,
      description: "ndvi_" + date[0] + '_' + date[1],
      folder: 'MOD09GA_NDVI',
    });
  })
})
// 仅用于查看GAUL行政区划的属性信息
// var fvLayer = ui.Map.FeatureViewLayer('FAO/GAUL/2015/level1_FeatureView');
// var visParams = {
//   color: '00909F',
//   fillColor: 'b5ffb4',
//   opacity: 1,
//   width: 1,
//   pointSize: 1
// };
// fvLayer.setVisParams(visParams);
// fvLayer.setName('First Level Administrative Units');
// Map.setCenter(7.82, 49.1, 4);
// Map.add(fvLayer);



时间有限,很多代码的相关讨论并没有进行。如有问题,私聊或者评论.

目录
相关文章
|
7月前
|
计算机视觉
Google Earth Engine(GEE)——使用MODIS数据单点测试SG滤波和harmonics method 滤波的差异分析
Google Earth Engine(GEE)——使用MODIS数据单点测试SG滤波和harmonics method 滤波的差异分析
270 0
|
7月前
|
编解码 定位技术
Google Earth Engine(GEE)——导出后的影像像素不同于原始Landsat影像的分辨率(投影差异)
Google Earth Engine(GEE)——导出后的影像像素不同于原始Landsat影像的分辨率(投影差异)
225 0
Google Earth Engine(GEE)——影像进行数学运算(NDVI为例)!
Google Earth Engine(GEE)——影像进行数学运算(NDVI为例)!
825 0
Google Earth Engine(GEE)——影像进行数学运算(NDVI为例)!
|
7月前
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
143 0
|
7月前
Google Earth Engine(GEE) ——如何获取指定研究区范围内的单个影像的时间,这里求具体的天数,以landsat9影像为例。
Google Earth Engine(GEE) ——如何获取指定研究区范围内的单个影像的时间,这里求具体的天数,以landsat9影像为例。
228 0
|
7月前
|
数据可视化 Python
python中Copula在多元联合分布建模可视化2实例合集|附数据代码
python中Copula在多元联合分布建模可视化2实例合集|附数据代码
|
7月前
|
数据可视化
R语言建立和可视化混合效应模型mixed effect model
R语言建立和可视化混合效应模型mixed effect model
|
数据采集
GEE:如何进行对MOD09GA数据集进行水体/云掩膜并计算NDVI将其导出至云盘?
GEE:如何进行对MOD09GA数据集进行水体/云掩膜并计算NDVI将其导出至云盘?
610 0
|
7月前
|
传感器
GEE——使用cart机器学习方法对Landsat影像条带修复以NDVI和NDWI为例(全代码)
GEE——使用cart机器学习方法对Landsat影像条带修复以NDVI和NDWI为例(全代码)
135 0
|
7月前
Google Earth Engine(GEE)——MODIS/061/MOD09GQ数据缺失波段信息(官方引入数据超时)
Google Earth Engine(GEE)——MODIS/061/MOD09GQ数据缺失波段信息(官方引入数据超时)
105 0