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);



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

目录
相关文章
|
5月前
|
计算机视觉
Google Earth Engine(GEE)——使用MODIS数据单点测试SG滤波和harmonics method 滤波的差异分析
Google Earth Engine(GEE)——使用MODIS数据单点测试SG滤波和harmonics method 滤波的差异分析
200 0
|
5月前
|
传感器 编解码 区块链
Google Earth Engine(GEE)——Landsat8/modis/sentinel2 NDVI时序影像差异对比分析图表
Google Earth Engine(GEE)——Landsat8/modis/sentinel2 NDVI时序影像差异对比分析图表
118 0
|
5月前
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
102 0
|
数据采集
GEE:如何进行对MOD09GA数据集进行水体/云掩膜并计算NDVI将其导出至云盘?
GEE:如何进行对MOD09GA数据集进行水体/云掩膜并计算NDVI将其导出至云盘?
508 0
|
5月前
|
传感器
GEE——使用cart机器学习方法对Landsat影像条带修复以NDVI和NDWI为例(全代码)
GEE——使用cart机器学习方法对Landsat影像条带修复以NDVI和NDWI为例(全代码)
91 0
|
5月前
Google Earth Engine(GEE)——MODIS/061/MOD09GQ数据缺失波段信息(官方引入数据超时)
Google Earth Engine(GEE)——MODIS/061/MOD09GQ数据缺失波段信息(官方引入数据超时)
79 0
|
5月前
|
人工智能
Google Earth Engine (GEE) ——gee中自带的Landsat8和5数据集对于温度波段的映射出现无法运行的情况
Google Earth Engine (GEE) ——gee中自带的Landsat8和5数据集对于温度波段的映射出现无法运行的情况
78 0
|
5月前
|
定位技术 Python
R语言raster包遍历多个文件夹并批量计算每一个文件夹下全部遥感影像的平均值
R语言raster包遍历多个文件夹并批量计算每一个文件夹下全部遥感影像的平均值
PIE-engine 教程 ——NDVI和FVC计算时序分析以2013年-2020年福州市为例
PIE-engine 教程 ——NDVI和FVC计算时序分析以2013年-2020年福州市为例
594 0
PIE-engine 教程 ——NDVI和FVC计算时序分析以2013年-2020年福州市为例
|
JSON 数据可视化 数据格式
PIE-engine 教程 ——长时间序列NDVI影像计算和chart时序图加载(2017年锦州全年植被指数展示)
PIE-engine 教程 ——长时间序列NDVI影像计算和chart时序图加载(2017年锦州全年植被指数展示)
584 0
PIE-engine 教程 ——长时间序列NDVI影像计算和chart时序图加载(2017年锦州全年植被指数展示)
下一篇
无影云桌面