Last active
February 19, 2022 11:09
-
-
Save OterLabb/9c34d1d1e613426db3bb987e3b64290b to your computer and use it in GitHub Desktop.
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
// GEE Script for å hente ut NDVI og SDVI verdier fra punkter | |
// Eksporterer til .csv fil | |
// Scriptet må kjøres to ganger, første gangen for å finne antall satelittbilder, | |
// så skrive inn antallet bilder på linje 70 | |
// Polygon (studie området) heter 'stud_omraade'¨ | |
// Random points heter 'table' | |
// Importere verktøy for å filtere ut skyer/vann/skygger | |
// Taken from André Hollstein et al. 2016 (doi:10.3390/rs8080666) | |
// http://www.mdpi.com/2072-4292/8/8/666/pdf | |
var cld = require('users/fitoprincipe/geetools:cloud_masks') | |
// Importere satelittbilder (Søke i toppfeltet), så bytter navn til S2 | |
var S2 = imageCollection | |
// Finne satelittbilder innenfor dato | |
.filterDate('2021-08-10', '2021-08-15') | |
// Filtere utifra studieområadet - finne sateliettbiler innenfor studieområdet | |
.filterBounds(stud_omraade) | |
// Lage NDVI som et eget band | |
var addNDVI = function(image) { | |
return image.addBands(image.normalizedDifference(['B8', 'B4']).rename('NDVI')); | |
}; | |
// Legge til NDVI-bandet til S2 (imageCollection) | |
var S2 = S2.map(addNDVI) | |
// Lage NDSI som et eget band | |
var addNDSI = function(image) { | |
return image.addBands(image.normalizedDifference(['B3', 'B6']).rename('NDSI')); | |
}; | |
// Legge til NSDI-bandet til S2 (imageCollection) | |
var S2 = S2.map(addNDSI) | |
print(S2,'S2 med NDVI/NDSI') // Sjekke data | |
// Undersøke data så langt | |
Map.addLayer(table) // Legge til punkter i kartet | |
Map.setCenter(13.23, 64.46, 10); // Flytte kartet til studieområdet | |
var test_image = S2.first() // Vi bruker det første bildet i samlingen | |
print(test_image.getInfo(), 'Test bilde') // Printe informasjon | |
Map.addLayer(test_image, {bands:['B2', 'B3', 'B4'], min:0, max:3000}, 'Test bilde') // Legge til test bildet i kartet | |
// Teste maskering av skyer/skygger/vann på test bildet | |
var masked = cld.hollstein_S2(['cloud', 'shadow', 'water', 'cirrus'])(test_image) | |
Map.addLayer(masked, {bands:['hollstein'], min:0, max:1, palette: ['#FF0000']}, 'masked') // Røde områder blir med i analysen | |
// Colour Palette for NDVI | |
var visNDVI = { | |
bands: ['NDVI'], | |
min: -1, | |
max: 1, | |
palette: ['blue', 'white', 'green'] | |
}; | |
Map.addLayer(masked, visNDVI, 'NDVI test bilde') | |
// Filtrere ut skyer/skygger på alle satelittbildene | |
var count_filter = S2.size(); // Finne antall satelittbilder | |
print(count_filter, 'Antall satelittbilder') | |
var listNDVI=S2.toList(count_filter); // Lage en liste over satelittbildene | |
var newList = ee.List([]); // Lage en tom liste for å legge inn de ferdige satelittbildene | |
// For loop, som går gjennom hvert satelittbilde og maskerer ut skyer/skygger | |
for(var i = 0; i < 6; i++){ // Her må tall nr 2 byttes ut med antall satelittbilder i samelingen | |
var image = ee.Image(listNDVI.get(i)); | |
//print(image); | |
var image2 = cld.hollstein_S2(['cloud', 'shadow', 'water', 'cirrus'])(image) // Maskere skyer | |
var image3 = image2.clip(stud_omraade) // Klippe til studieområdet | |
var image4 = image3.select(['NDVI', 'NDSI']) // Velge ut bare de bandene vi skal ha | |
//print(image4); | |
var date = image4.date().format('yyyy-MM-dd').getInfo(); // Lagre datoen | |
var name_i= 'NDVI_'+i.toString()+'_'+date; | |
newList = newList.add(image4) | |
Map.addLayer(image3, visNDVI, name_i) // Legge til i kartet | |
} | |
print(newList, 'Ny liste'); // Sjekke nye listen | |
var newS2 = ee.ImageCollection(newList) // Gjøre om listen til imageCollection | |
print(newS2, 'Ny ImageCollection') // Sjekke nye imagecollection | |
// Get ndvi values to table | |
var mapfunc = function(feat) { | |
// get feature geometry | |
var geom = feat.geometry() | |
// function to iterate over the yearly ImageCollection | |
// the initial object for the iteration is the feature | |
var addProp = function(img, f) { | |
// cast Feature | |
var newf = ee.Feature(f) | |
// get date as string | |
var date = img.date().format() | |
// extract the value (first) of 'NDVI' in the feature | |
var value = img.reduceRegion(ee.Reducer.first(), geom, 10).get('NDVI') | |
// if the value is not null, set the values as a property of the feature. The name of the property will be the date | |
return ee.Feature(ee.Algorithms.If(value, | |
newf.set(date, ee.String(value)), | |
newf.set(date, ee.String('NA')))) | |
} | |
var newfeat = ee.Feature(newS2.iterate(addProp, feat)) | |
return newfeat | |
}; | |
var ndviFt = table.map(mapfunc); | |
//var newftNDVI = points.map(mapfunc); | |
print(ndviFt) | |
// Export | |
Export.table.toDrive(ndviFt, | |
"export_Points_ndvi", | |
"export_Points_ndvi", | |
"export_Points_ndvi"); | |
// Get NDSI values to table | |
var mapfunc = function(feat) { | |
// get feature geometry | |
var geom = feat.geometry() | |
// function to iterate over the yearly ImageCollection | |
// the initial object for the iteration is the feature | |
var addProp = function(img, f) { | |
// cast Feature | |
var newf = ee.Feature(f) | |
// get date as string | |
var date = img.date().format() | |
// extract the value (first) of 'NDVI' in the feature | |
var value = img.reduceRegion(ee.Reducer.first(), geom, 10).get('NDSI') | |
// if the value is not null, set the values as a property of the feature. The name of the property will be the date | |
return ee.Feature(ee.Algorithms.If(value, | |
newf.set(date, ee.String(value)), | |
newf.set(date, ee.String('NA')))) | |
} | |
var newfeat = ee.Feature(newS2.iterate(addProp, feat)) | |
return newfeat | |
}; | |
var ndsiFt = table.map(mapfunc); | |
//var newftNDVI = points.map(mapfunc); | |
print(ndsiFt) | |
// Export | |
Export.table.toDrive(ndsiFt, | |
"export_Points_ndsi", | |
"export_Points_ndsi", | |
"export_Points_ndsi"); | |
// Eksportere raster hvis ønskelig | |
//var batch = require('users/fitoprincipe/geetools:batch') | |
// | |
// batch.Download.ImageCollection.toDrive(newS2, 'test', { | |
// scale: 10, | |
// region: stud_omraade | |
//}) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment