首页
学习
活动
专区
圈层
工具
发布

谷歌地球引擎:利用8天合成MODIS反射率计算、下载逐年每八日NDVI

  本文介绍在谷歌地球引擎GEE中,基于8天的MODIS遥感影像数据,计算并下载全球每8天NDVI数据,并将每一景数据名称按照YYYYddd格式命名的方法。

  首先,明确一下本文的需求。现在希望在GEE中,利用MOD09A1这个8天合成产品的地表反射率产品,计算全球的逐8日NDVI,指定其坐标系与空间分辨率后下载数据到本地;同时,下载的数据名称需要包含其年份与Day of  the Year(DOY)。

  本文所用代码如下。

var mod09a1 = ee.ImageCollection("MODIS/061/MOD09A1").select(["sur_refl_b01", "sur_refl_b02"])

.filterDate("2023-01-01", "2025-12-31");

var region = ee.Geometry.Polygon([[[180, 90], [-180, 90], [-180, -90], [180, -90]]], null, false);

var calculateScaledNDVI = function(image) {

var ndvi = image.normalizedDifference(["sur_refl_b02", "sur_refl_b01"])

  .multiply(10000)

  .round()

  .clamp(-10000, 10000)

  .int16()

  .rename("NDVI");

return ndvi.copyProperties(image, ["system:time_start"]);

};

var batchExport = function(image) {

var date = ee.Date(image.get("system:time_start"));

var year = date.format("YYYY");

var doy = date.getRelative("day", "year").add(1).format("%03d");

Export.image.toDrive({

  image: calculateScaledNDVI(image),

  description: ee.String("NDVI_").cat(year).cat(doy).getInfo(),

  scale: 5565.97,

  region: region,

  crs: 'EPSG:4326',

  maxPixels: 1e13,

  folder: "NDVI"

});

};

var imageList = mod09a1.toList(mod09a1.size());

for (var i = 0; i < imageList.size().getInfo(); i++) {

// print(imageList.get(i));

var image = ee.Image(imageList.get(i));

batchExport(image);

}

  代码整体思路也很简单。

  首先,获取MOD09A1数据产品的sur_refl_b01(红光波段)和sur_refl_b02(近红外波段),并定义一个多边形来覆盖全球(经度±180°,纬度±90°)。

  随后,是计算NDVI的函数。在函数中,计算NDVI,并将结果放大10000倍取整,设置数据范围(也就是NDVI从-1到1的范围),同时将数据设置为整型。这是为了减少文件体积,方便数据存储。

  接下来,是导出数据的函数。在函数中,提取每一景数据的年份DOY,并将数据导出至Drive;其中,在导出时设定数据的坐标系与空间分辨率等参数。

  最后,就是一个循环,用以将所选定的MOD09A1数据分别加以处理并导出。

  执行上述代码,即可在GEE右侧Tasks中看到导出任务,如下图所示;点击RUN即可运行任务。

  当导出任务比较多时,可以参考文章谷歌地球引擎GEE计算多年内每隔8天的遥感影像平均值中提到的批量点RUN方法来运行上述任务。

  任务执行完毕后,数据会暂存在Drive中;随后手动再将数据下载到本地即可。

  至此,大功告成。

欢迎关注:疯狂学习GIS

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OyRr9QgilEyxvg6Y-NReE3dg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券