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



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

目录
相关文章
|
9月前
|
XML 存储 数据处理
python绘制热力图-数据处理-VOC数据类别标签分布及数量统计(附代码)
python绘制热力图-数据处理-VOC数据类别标签分布及数量统计(附代码)
|
9月前
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
GEE——Google dynamic world中在影像导出过程中无法完全导出较大面积影像的解决方案(投影的转换)EPSG:32630和EPSG:4326的区别
163 0
|
9月前
Google Earth Engine(GEE) ——如何获取指定研究区范围内的单个影像的时间,这里求具体的天数,以landsat9影像为例。
Google Earth Engine(GEE) ——如何获取指定研究区范围内的单个影像的时间,这里求具体的天数,以landsat9影像为例。
246 0
|
9月前
|
算法 异构计算
基于直方图的图像曝光量分析FPGA实现,包含tb测试文件和MATLAB辅助验证
该内容包括了算法的运行效果展示、软件版本信息、理论概述和核心程序代码。在正常图像中,`checkb`位于`f192b`和`f250b`之间,而多度曝光图像中`checkb`超出此范围,判断为曝光过度。使用的软件为Vivado 2019.2和MATLAB 2022a。理论依据未详细给出,但提及主要方法。提供的Verilog代码段用于处理图像数据,包括读取文件、时钟控制及图像histogram计算等,其中模块`im_hist`似乎是关键部分。
|
9月前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到&quot;result.txt&quot;以供MATLAB显示图像分割效果。
|
数据采集
GEE:如何进行对MOD09GA数据集进行水体/云掩膜并计算NDVI将其导出至云盘?
GEE:如何进行对MOD09GA数据集进行水体/云掩膜并计算NDVI将其导出至云盘?
642 0
|
9月前
Google Earth Engine(GEE)——MODIS/061/MOD09GQ数据缺失波段信息(官方引入数据超时)
Google Earth Engine(GEE)——MODIS/061/MOD09GQ数据缺失波段信息(官方引入数据超时)
112 0
|
9月前
|
传感器
GEE——使用cart机器学习方法对Landsat影像条带修复以NDVI和NDWI为例(全代码)
GEE——使用cart机器学习方法对Landsat影像条带修复以NDVI和NDWI为例(全代码)
149 0
|
9月前
|
API Python
GEE python:创建逐月影像以Landsat 5TOA影像为例
GEE python:创建逐月影像以Landsat 5TOA影像为例
83 0
PIE-engine 教程 ——NDVI和FVC计算时序分析以2013年-2020年福州市为例
PIE-engine 教程 ——NDVI和FVC计算时序分析以2013年-2020年福州市为例
654 0
PIE-engine 教程 ——NDVI和FVC计算时序分析以2013年-2020年福州市为例