Last active
September 22, 2023 16:53
-
-
Save ptoffy/e41bb2eb2c36eba9380d60c807e04542 to your computer and use it in GitHub Desktop.
Draw NDVI on Google EE
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 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