Я начинаю с кодирования двигателя земли (ee). Следуя инструкциям от https://developers.google.com/earth-engine/tutorial_api_07, я смог собрать код и получить график. Но почему диапазон дат на графике идет с 2016 по 2018 год при filterDate('2017-01-01', '2017-12-31')?
var image = ee.Image(
s2.filterBounds(point)
.filterDate('2017-01-01', '2017-12-31')
.sort('CLOUD_COVER')
.first()
);
var addNDVI = function(image) {
var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
return image.addBands(ndvi);
};
var ndvi = addNDVI(image).select('NDVI');
var withNDVI = s2.map(addNDVI);
var chart = ui.Chart.image.series({
imageCollection: withNDVI.select('NDVI'),
region: point,
reducer: ee.Reducer.first(),
scale: 30
}).setOptions({title: 'NDVI over time'});
print(chart);



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ваш код не создает ожидаемую диаграмму с диапазоном дат, поскольку вы устанавливаете результат временной фильтрации для изображения (ee.Image(...first()), а затем используете исходную коллекцию изображений s2 для вычислений и построения диаграмм NDVI. Ваш код должен выглядеть примерно так, где вы устанавливаете результаты фильтрации в переменную коллекции изображений и используете их в функции NDVI и построении графика:
var s2 = ee.ImageCollection("COPERNICUS/S2"),
point = ee.Geometry.Point([-86.54734555291998, 34.74135144079877]);
var filteredIC = s2.filterBounds(point)
.filterDate('2017-01-01', '2017-12-31')
.sort('CLOUD_COVER')
var addNDVI = function(image) {
var ndvi = image.normalizedDifference(['B5', 'B4']).rename('NDVI');
return image.addBands(ndvi);
};
var withNDVI = filteredIC.map(addNDVI);
var chart = ui.Chart.image.series({
imageCollection: withNDVI.select('NDVI'),
region: point,
reducer: ee.Reducer.first(),
scale: 30
}).setOptions({title: 'NDVI over time'});
print(chart);
Вот ссылка на код: https://code.earthengine.google.com/6e7dba0fbbda1cab133b3dffe31e2e9e
Надеюсь, это поможет!