1

这是否可以在不手动更改每一年的日期的情况下获得特定坐标的 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');
4

1 回答 1

0

您可以使用映射函数来计算年度 NDVI 作为图像集。以下是使用 Google 地球引擎的方法。

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');

这是相同的 GEE 脚本。

于 2019-12-03T12:21:47.780 回答