Skip to content

Instantly share code, notes, and snippets.

@ptoffy
Last active September 22, 2023 16:53
Show Gist options
  • Save ptoffy/e41bb2eb2c36eba9380d60c807e04542 to your computer and use it in GitHub Desktop.
Save ptoffy/e41bb2eb2c36eba9380d60c807e04542 to your computer and use it in GitHub Desktop.
Draw NDVI on Google EE
// Define function to compute NDVI
function addNDVI(image) {
return image.addBands(image.normalizedDifference(['B8', 'B4']).rename('ndvi'));
}
// Define function to filter and compute NDVI for a given year and region
function processYearlyData(year, region) {
var startDate = ee.Date.fromYMD(year, 4, 1);
var endDate = ee.Date.fromYMD(year, 9, 30);
return ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
.filterDate(startDate, endDate)
.filterBounds(region)
.filterMetadata('CLOUDY_PIXEL_PERCENTAGE', 'less_than', 10)
.map(addNDVI);
}
// Process data for each year
var years = ee.List.sequence(2016, 2023);
var yearlyData = years.map(function (year) {
return processYearlyData(year, region);
});
// Visualization parameters
var vizParams_ndvi = {
min: -0.2, max: 0.8,
palette: 'FFFFFF, CE7E45, DF923D, F1B555, FCD163, 99B718, 74A901, 66A000, 529400, 3E8601, 207401, 056201, 004C00, 023B01, 012E01, 011D01, 011301'
};
// Add layers to the map for each year
for (var i = 0; i < years.length; i++) {
var data = processYearlyData(years[i], region);
var medianNDVI = ee.ImageCollection(data).select('ndvi').median();
Map.addLayer(medianNDVI.clip(region), vizParams_ndvi, 'NDVI_' + years[i]);
}
// Center the map on the region
Map.centerObject(region, 14);
//creazione serie temporale
// Process data for each year and store in a list
var processedYears = years.map(function(year) {
return processYearlyData(year, region);
});
// Merge all the ImageCollections into one
var MuraglioneMerged = ee.ImageCollection(processedYears.get(0));
for (var i = 1; i < 8; i++) {
MuraglioneMerged = MuraglioneMerged.merge(ee.ImageCollection(processedYears.get(i)));
}
print("MuraglioneMerged", MuraglioneMerged);
var plotNDVI = ui.Chart.image.seriesByRegion(MuraglioneMerged, region, ee.Reducer.mean(),
'ndvi', 10, //scala: era a 20 m
'system:time_start', 'system:index')
.setChartType('LineChart').setOptions({
title: 'Serie Temporale Indice NDVI',
hAxis: { title: 'Date' },
vAxis: { title: 'NDVI' }
});
// Display.
print(plotNDVI);
var months = ee.List.sequence(1, 12);
var years = ee.List.sequence(2016, 2023);
var MuraglioneMerged_ndvi = MuraglioneMerged.select(['ndvi']);
print('MuraglioneMerged_ndvi', MuraglioneMerged_ndvi)
var byMonthYear = ee.ImageCollection.fromImages(
years.map(function (y) {
return months.map(function (m) {
return MuraglioneMerged_ndvi
.filter(ee.Filter.calendarRange(y, y, 'year'))
.filter(ee.Filter.calendarRange(m, m, 'month'))
.filterBounds(region)
.mean()
.set('month', m).set('year', y);
});
}).flatten());
print('ImageCollection', byMonthYear)
var plotNDVI2 = ui.Chart.image.seriesByRegion(MuraglioneMerged, region, ee.Reducer.mean(),
'ndvi', 10)
.setChartType('LineChart').setOptions({
title: 'Serie Temporale Indice NDVI',
hAxis: { title: 'Date' },
vAxis: { title: 'NDVI' }
});
// Display.
print(plotNDVI2);
var img = byMonthYear.toBands();
print('Collection to bands', img);
Map.addLayer((img.select(0)).clip(region), vizParams_ndvi, 'NDVI_july2018')
Map.addLayer((img.select(1)).clip(region), vizParams_ndvi, 'NDVI_ago2018')
Map.addLayer((img.select(2)).clip(region), vizParams_ndvi, 'NDVI_sept2018')
Map.addLayer((img.select(3)).clip(region), vizParams_ndvi, 'NDVI_oct2018')
Map.addLayer((img.select(4)).clip(region), vizParams_ndvi, 'NDVI_july2019')
Map.addLayer((img.select(5)).clip(region), vizParams_ndvi, 'NDVI_ago2019')
Map.addLayer((img.select(6)).clip(region), vizParams_ndvi, 'NDVI_sept2019')
Map.addLayer((img.select(7)).clip(region), vizParams_ndvi, 'NDVI_oct2019')
Map.addLayer((img.select(8)).clip(region), vizParams_ndvi, 'NDVI_july2020')
Map.addLayer((img.select(9)).clip(region), vizParams_ndvi, 'NDVI_ago2020')
Map.addLayer((img.select(10)).clip(region), vizParams_ndvi, 'NDVI_sept2020')
Map.addLayer((img.select(11)).clip(region), vizParams_ndvi, 'NDVI_oct2020')
Map.addLayer((img.select(12)).clip(region), vizParams_ndvi, 'NDVI_july2021')
Map.addLayer((img.select(13)).clip(region), vizParams_ndvi, 'NDVI_ago2021')
Map.addLayer((img.select(14)).clip(region), vizParams_ndvi, 'NDVI_sept2021')
Map.addLayer((img.select(15)).clip(region), vizParams_ndvi, 'NDVI_oct2021')
var projection = img.projection().getInfo();
Export.image.toDrive({
image: img.clip(region),
description: 'NDVIMuraglione_julyTosept_2018To2022',
crs: 'EPSG:4326',
region: region,
fileFormat: 'GeoTIFF',
scale: 10
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment