是否有可能获得30年的最绿色像素,NDVI年度平均值和特定坐标的中位数数据,而无需手动更改每一年的日期?
当前,我正在使用以下代码并手动更改年度时间范围以获取值。以及如何在.csv文件中导出此数据集。
var l8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA');
var spatialFiltered = l8.filterBounds(point);
print('spatialFiltered', spatialFiltered);
var temporalFiltered = spatialFiltered.filterDate('2015-01-01', '2015-12-31');
print('temporalFiltered', temporalFiltered);
var sorted = temporalFiltered.sort('CLOUD_COVER');
var scene = sorted.first();
//获得2015年最模糊的图像。
var image = ee.Image(
l8.filterBounds(point)
.filterDate('2015-01-01', '2015-12-31')
.sort('CLOUD_COVER')
.first()
);
//(NDVI)。
var nir = image.select('B5');
var red = image.select('B4');
var ndvi = nir.subtract(red).divide(nir.add(red)).rename('NDVI');
//结果。
Map.centerObject(image, 9);
var ndviParams = {min: -1, max: 1, palette: ['blue', 'white', 'green']};
Map.addLayer(ndvi, ndviParams, 'NDVI image');
var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
最佳答案
您可以使用映射功能来计算年度NDVI作为图像集。使用Google Earth Engine的方法如下。
var point = ee.Geometry.Point([-122.44210030630455, 37.73518696319849]);
Map.centerObject(point, 9);
var l8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA');
var years = ee.List.sequence(2013, 2019);
var leastCloudIC = ee.ImageCollection(years.map(function (y) {
return ee.Image(
l8.filterBounds(point)
.filterDate(ee.Date.fromYMD(ee.Number(y), 01, 01),
ee.Date.fromYMD(ee.Number(y), 12, 31))
.sort('CLOUD_COVER').first()
);
}));
var annualNDVI = leastCloudIC.map(function (img) {
return img.normalizedDifference(['B5', 'B4']).rename('NDVI').set('system:time_start', img.get('system:time_start'));
});
var ndviParams = {min: -1, max: 1, palette: ['blue', 'white', 'green']};
var ndvi2015 = annualNDVI.filterDate('2015-01-01', '2015-12-31').first();
Map.addLayer(annualNDVI.filterDate('2015-01-01', '2015-12-31').first(), ndviParams, 'ndvi 2015');
Here's相同的GEE脚本。
关于javascript - 是否有任何代码可以通过Landat开发NDVI的30年数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59079987/