1 介绍
哨兵-2是一项宽幅、高分辨率、多光谱成像任务,支持哥白尼土地监测研究,包括监测植被、土壤和水覆盖,以及观测内陆水道和沿海地区。
哨兵-2的数据包含13个UINT16光谱带,代表TOA反射率,以10000为尺度。详见Sentinel-2用户手册。此外,还有三个QA波段,其中一个(QA60)是一个带有云层遮蔽信息的比特掩码波段。更多的细节,请看关于云层掩码如何计算的完整解释。
每个Sentinel-2产品可能包含多个波段。每个波段成为一个单独的地球引擎资产。Sentinel-2资产的EE资产ID有以下格式。COPERNICUS/S2/20151128T002653_20151128T102149_T56MNN. 这里,第一个数字部分代表传感日期和时间,第二个数字部分代表产品生成日期和时间,最后的6个字符的字符串是一个独特的颗粒标识符,表示其UTM网格参考(见MGRS)。
欧空局制作的Level-2数据可以在COPERNICUS/S2_SR集合中找到。
云层大部分可以通过使用COPERNICUS/S2_CLOUD_PROBABILITY删除。代码有展示。
2 计算
var roi=table.filter(ee.Filter.eq("NAME","天水市"))
// 哨兵2的数据
for(var i=2020;i<=2022;i++){
var s2 = ee.ImageCollection("COPERNICUS/S2");
// 哨兵2去云
var s2_rmcloud = function(image) {
var quality = image.select("QA60").unmask();
return image.updateMask(quality.eq(0));
};
// 哨兵2计算ndvi
var s2_ndvi = function(image) {
return image.addBands(image.normalizedDifference(["B8", "B4"]).rename("NDVI"));
};
//获取感兴趣区域
var study_s2 = s2.filterDate(i+"-01-01", i+"-12-31")
.filterBounds(roi);
var study_s2_nocloud = study_s2.map(s2_rmcloud);
var ndvi = s2_ndvi(study_s2_nocloud.median()).select("NDVI").clip(roi);
var visParam = {
min: -0.2,
max: 0.8,
palette: 'FFFFFF, CE7E45, DF923D, F1B555, FCD163, 99B718, 74A901, 66A000, 529400,' +
'3E8601, 207401, 056201, 004C00, 023B01, 012E01, 011D01, 011301'
};
// 绘制NDVI
Map.addLayer(ndvi, visParam, 'Vegetation'+"-"+i);
}
Map.centerObject(roi, 8);
// 这里构建空的Image,然后通过palette设置边界颜色
var empty = ee.Image().toByte();
var outline = empty.paint({
featureCollection:roi, // 筛选的colletion
color:0, //颜色透明
width:3 //边界宽度
});
//绘制红色边界
Map.addLayer(outline, {palette: "ff0000"}, "outline");
代码第1行:依据2020年中国市级边界筛选”天水市“;
代码第3-24行;for循环计算历年NDVI,其中:
代码6-9行:对哨兵2进行去云;
代码30-35:定义空值影像制作研究区外轮廓;
利用map循环计算NDVI
var roi=table.filter(ee.Filter.eq("NAME","天水市"))
var visParam = {
min: -0.2,
max: 0.8,
palette: 'FFFFFF, CE7E45, DF923D, F1B555, FCD163, 99B718, 74A901, 66A000, 529400,' +
'3E8601, 207401, 056201, 004C00, 023B01, 012E01, 011D01, 011301'
};
Map.centerObject(roi, 8);
// 哨兵2去云
var s2_rmcloud = function(image) {
var quality = image.select("QA60").unmask();
return image.updateMask(quality.eq(0));
};
// 哨兵2计算ndvi
var s2_ndvi = function(image) {
return image.addBands(image.normalizedDifference(["B8", "B4"]).rename("NDVI"));
};
var yearList=ee.List.sequence(2020,2022);
var s2 = ee.ImageCollection("COPERNICUS/S2");
var S2 = yearList.map(function(year){
var year=ee.Number(year)
//获取感兴趣区域
var ndvi = s2.filter(ee.Filter.calendarRange(year,year,"year"))
.filterBounds(roi)
.map(s2_rmcloud)
.map(s2_ndvi)
.median()
.select("NDVI")
.clip(roi);
var img=ndvi
var img=img.set("year",year);
var img=img.set("system:index",ee.String(year.toInt()));
return img;
})
var NDVIcol=ee.ImageCollection.fromImages(S2)
print("NDVI List is:",NDVIcol)
Map.addLayer(NDVIcol.first(),visParam,"NDVIcol.first")
var empty=ee.Image().toByte()
var outline=empty.paint({
featureCollection:roi,
color:0,
width:3,
});
Map.addLayer(outline,{palette: "red"},"outline")
到此计算完成