目录
- 1.实验背景
-
- 1.1实验目的
-
-
- (1)使用MOD09GA的六个波段计算albedo,使用梁老师的计算公式:
- (2)裁剪
- (3)批量导出
-
- 1.2 实验数据
- 2.参考文献
- 3.实验代码
- 4.结果
- 5. 讨论
1.实验背景
最近在计算地表反照率albedo,如果在NASA官网上下载,得下载六幅影像进行拼接,一天六幅,一年365天,我觉得比较麻烦,正好GEE提供了在线拼接的影像,那就稍微处理一下再下载。
1.1实验目的
本文章的代码想要完成以下的任务:
(1)使用MOD09GA的六个波段计算albedo,使用梁老师的计算公式:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL0AjY1UGNkZWOhZmZ4cTNhhjM3QzM3QjNxQzNwIGZ2I2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
(2)裁剪
(3)批量导出
1.2 实验数据
MOD09GA
MODIS/Terra Surface Reflectance Daily L2G Global 1 km and 500 m SIN Grid
2.参考文献
《GEE开发之Sentinel-2计算NDVI和数据分析》
3.实验代码
//裁剪函数
function ExtractByMask(Image)
{
return Image.clip(roi)
}
//乘参函数
function Multiply(Image)
{
return Image.multiply(0.0001)
}
//计算反照率albedo
function Cal_Albedo(img)
{
var b01=img.select('sur_refl_b01'); //提取波段
var b02=img.select('sur_refl_b02');
var b03=img.select('sur_refl_b03');
var b04=img.select('sur_refl_b04');
var b05=img.select('sur_refl_b05');
var b07=img.select('sur_refl_b07');
var albedo = img.expression(
"0.16*b01+0.291*b02+0.243*b03+0.116*b04+0.112*b05+0.018*b07-0.0015",
{
'b01':b01,'b02':b02,'b03':b03,'b04':b04,'b05':b05,'b07':b07
} //表达式,以及参数对应关系
);
return albedo;
}
//影像投影和重采样
function Reproject(image){
var wkt = 'GEOGCS["WGS 84",\
DATUM["WGS_1984",\
SPHEROID["WGS 84",6378137,298.257223563,\
AUTHORITY["EPSG","7030"]],\
AUTHORITY["EPSG","6326"]],\
PRIMEM["Greenwich",0,\
AUTHORITY["EPSG","8901"]],\
UNIT["degree",0.0174532925199433,\
AUTHORITY["EPSG","9122"]],\
AUTHORITY["EPSG","4326"]]';
//设置新的坐标系统
var proj_mollweide = ee.Projection(wkt);
//将影像进行重投影
var image_reproject = image.reproject({
crs: proj_mollweide,
scale: 500
})
return image_reproject;
}
var roi=table.geometry()
var batch = require('users/fitoprincipe/geetools:batch') //调用导出工具
//筛选影像
var Reflect_dataset=ee.ImageCollection("MODIS/061/MOD09GA")
.filterDate('2004-07-01','2004-10-01')
//.select(['sur_refl_b01','sur_refl_b02','sur_refl_b03','sur_refl_b04','sur_refl_b05','sur_refl_b06','sur_refl_b07']) 不要在这里筛选
.filterBounds(roi);
var Reflect_Multiply=Reflect_dataset.map(Multiply) //乘参
var Reflect_calalbedo=Reflect_Multiply.map(Cal_Albedo)
var Reflect_ExtractByMask=Reflect_calalbedo.map(ExtractByMask) //裁剪
print(Reflect_ExtractByMask)
var Reflect_Reproject=Reflect_ExtractByMask.map(Reproject) //重投影
print(Reflect_Reproject.first().projection())
//COLLECTION导出
batch.Download.ImageCollection.toDrive(Reflect_Reproject,"2004albedo", {
scale: 10000,
crs: "EPSG:4326",
type:"float" })
4.结果
5. 讨论
在筛选数据集的时候,不需要加入波段条件。如果先加入了波段,有时候会出现说投影问题,但print投影的时候又是对的。