Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Preprocessing step
- var collection = ee.ImageCollection("COPERNICUS/S2_SR")
- .filterDate("2020-01-01", "2020-03-01")
- .filter(
- ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 50)
- )
- .map(function (image) {
- var qa = image.select('QA60');
- var cloudBitMask = 1 << 10;
- var cirrusBitMask = 1 << 11;
- var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
- .and(qa.bitwiseAnd(cirrusBitMask).eq(0));
- image = image.updateMask(mask).divide(10000);
- image = image.addBands(image.normalizedDifference(['B8', 'B4']).toFloat().rename('NDVI'))
- .addBands(image.normalizedDifference(['B12', 'B4']).toFloat().rename('NDFI'))
- return image.select(["NDVI", "NDFI"]);
- });
- // Foyou Tian, et al
- // Add empty image to prevent null error when calculating percentile
- var emptyImage = ee.Image().rename("NDVI").toFloat()
- .addBands(ee.Image().rename("NDFI").toFloat())
- collection = ee.ImageCollection(ee.List([emptyImage])).merge(collection);
- function percentile_transformation(data, bands) {
- function rename_bands(bands, suffix) {
- return bands.map(function (b) {
- return ee.String(b).cat(suffix)
- })
- }
- function get_interval_mean(img, bands, pstart, pend){
- return img
- .select(bands)
- .reduce(ee.Reducer.intervalMean(pstart,pend))
- .rename(rename_bands(bands, "_" + pstart + "-" + pend));
- }
- function get_percentile(img, bands, p){
- return img.select(bands).reduce(ee.Reducer.percentile(p));
- }
- return (
- get_interval_mean(data, bands, 0, 100)
- .addBands(get_interval_mean(data, bands, 10, 25))
- .addBands(get_interval_mean(data, bands, 10, 90))
- .addBands(get_interval_mean(data, bands, 10, 100))
- .addBands(get_interval_mean(data, bands, 25, 50))
- .addBands(get_interval_mean(data, bands, 25, 75))
- .addBands(get_interval_mean(data, bands, 50, 75))
- .addBands(get_interval_mean(data, bands, 75, 90))
- .addBands(get_interval_mean(data, bands, 90, 100))
- .addBands(get_percentile(data, bands, [10, 25, 50, 75, 95]))
- );
- }
- var resultImage = percentile_transformation(collection, ["NDVI", "NDFI"]);
- Map.addLayer(resultImage)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement