0

I'm trying to extract the value of each single band of Sentinel-2 after resampling the bands from 10 meters to 30 meters using the resolution of the Landsat-8 (I didn't know how to do this in another way) This is the code using band 4 as an example. When I try to export the values ​​in a table the running time is infinite and I was not able to extract even the value for a single point.

N.B. my area is very large, it corresponds to all of southern europe thank you !

function maskS2clouds(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));
    
return image.updateMask(mask).divide(10000).select("B.*").copyProperties(image, ["system:time_start"]);
}
var start = '2012-01-01';
var end = '2022-12-31';
var cld_max = 30;

var s2 = ee.ImageCollection("COPERNICUS/S2_SR_HARMONIZED")
              .filterBounds(Eur)
              .filterDate(start,end)
              .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',60))
              .map(maskS2clouds);
    
var land8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR').filterBounds(Eur)


var b4 = land8.select('B4').filterBounds(Eur); // 30-m resolution
var b4s = s2.select('B4').filterBounds(Eur); // 10-m resolution 

var proj_10m = b4.first()
              .projection(); 

function resample(image) { 
    var b4s = image.select('B4');
    var b4s_res = b4s.resample('bilinear').reproject(proj_10m);
    return b4s_res;
}


var b4s_res =b4s.map(resample).filterBounds(Eur); 

//original code 
var pts = b4s_res.map(function(img) {
  var obs = img.reduceRegion(
      {geometry: points , reducer: ee.Reducer.median(), scale: 80});
  return img.set('B4', obs.get('B4'));
}); 

Export.table.toDrive({
  collection: pts,
  description: 'table_csv',
  folder: 'earth_engine_demos',
  fileFormat: 'CSV'
});

//test with geometry composed of two single points

var pts2 = b4s_res.map(function(img) {
  var obs2 = img.reduceRegion(
      {geometry: geometry , reducer: ee.Reducer.median(), scale: 80});
  return img.set('B4', obs2.get('B4'));
}); 

Export.table.toDrive({
  collection: pts2,
  description:'prova_csv',
  folder: 'earth_engine_demos',
  fileFormat: 'CSV'
});

Is it possible to find a faster way to extract the value of the points (2500 random points) in the table? Do you also know another way to apply a resampling on all bands simultaneously and extract the corresponding value of each point for each single band?

0 Answers0