Google Earth Engine (GEE) 是由谷歌公司开发的众多应用之一。借助谷歌公司超强的服务器运算能力以及与NASA的合作关系,GEE平台将Landsat/Sentinel等可以公开获取的遥感图像数据存储在谷歌的磁盘阵列中,使得GEE用户可以方便的提取、调用和分析海量的遥感大数据资源。
本文基于GEE平台,实现对指定地点Sentinel-2 Level1C数据进行NDVI指数的计算,示例地点为湖南省长沙市。代码如下:
(JS)
var cs = China.filterBounds(point).geometry();
var roi = cs;
function NDVI_V3(img) {
var ndvi = img.clip(roi).normalizedDifference(["B8","B4"]);
return ndvi;
}
//使用QA波段去云
function maskS2clouds(image) {
var qa = image.select('QA60');
// Bits 10 and 11 are clouds and cirrus, respectively.
var cloudBitMask = 1 << 10;
var cirrusBitMask = 1 << 11;
// Both flags should be set to zero, indicating clear conditions.
var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
.and(qa.bitwiseAnd(cirrusBitMask).eq(0));
return image.updateMask(mask).divide(10000);
}
//sentinel2 and roi
var dataset = ee.ImageCollection("COPERNICUS/S2")
.filterDate("2018-01-01", "2018-12-31")
.filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
.map(maskS2clouds);
var img = dataset.median().clip(roi)
//var img = ee.Image(dataset.filterBounds(roi).first());
print(img)
var ndvi3 = NDVI_V3(img);
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'
};
var rgbVis = {
min: 0.0,
max: 3048,
bands: ['B8', 'B4', 'B3'],
};
Map.addLayer(img, rgbVis, "raw_img");
Map.addLayer(ndvi3, visParam, "ndvi_3");
Map.centerObject(roi, 9);
注:①使用前,需要import我国的行政区划文件,其次需要选取例如湖南省长沙市境内的一点(point),最后import导入S2图 像。
②关于我国行政区划文件,分享百度网盘:链接:https://pan.baidu.com/s/1vrT5AmRTX8KmMMbpGtTAcg
提取码:o5vt
效果:
参考文章:
1.https://zhuanlan.zhihu.com/p/29637993