re write my GEE code with the function map()

12 Views Asked by At

I wrote this code to create histograms of the distribution of the VV and VH pixels backscattering from Sentinel-1 for 28 differents images. To do that I used a loop "for (var i = 0; i < images.length; i++)" but apparently in GEE it's better to use map() than the loop. Can someone help me change my code please? Thank you very much!

Here is the code :

//1.Loading of the data

//1.1. Region of interest

var roi = PV
var vis_params = { color : 'red', fillColor:'#ffffff00'}
Map.addLayer(roi.style(vis_params))

Map.centerObject(roi, 15)

//1.2. Sattelite imagery

var year = '2017'
var startDate = year+'-01-01'
var endDate   = year+'-12-31'
var polarisation   = 'VH'
var orbitDirection = 'ASCENDING'
var instrument     = 'IW'

var sentinel_1 = ee.ImageCollection("COPERNICUS/S1_GRD")
var s1_filter = sentinel_1
                .filter(ee.Filter.eq('instrumentMode', instrument))
                .filter(ee.Filter.listContains('transmitterReceiverPolarisation', polarisation))
                .select(polarisation)
                .filter(ee.Filter.eq('orbitProperties_pass', orbitDirection))
                .filterDate(startDate, endDate)
                .filterBounds(roi)

print(s1_filter)

var id         = s1_filter.aggregate_array('system:id').getInfo()
var projection = s1_filter.first().projection().getInfo()
var n          = s1_filter.size().getInfo();

// Loop over images

var images = [image, image1, image2,image3, image4,image5, image6,image7,image8,image9,image10,image11,image12,image13,image14,image15,image16,image17,image18,image19,image20,image21,image22,image23,image24,image25,image26,image27];
var imageNames = ['image1', 'image2','image3','image4','image5', 'image6','image7','image8','image9','image10','image11','image12','image13','image14','image15','image16','image17','image18','image19','image20','image21','image22','image23','image24','image25','image26','image27','image28']; // Add more names if necessary

for (var i = 0; i < images.length; i++) {
  var raster = images[i];
  var name = imageNames[i];

// 1.2. Raster images processing

  var raster_n = raster.eq(1)
                   .clip(roi);

// 2.1. Raster to vector to geometry

  var water = raster_n.reduceToVectors({
    geometry: raster.geometry(),
    scale: 30,
    geometryType: 'polygon',
    eightConnected: false,
    labelProperty: 'value',
    reducer: ee.Reducer.countEvery()
  });
  //Map.addLayer(water, {palette: ['blue', 'green', 'red']}, 'water dry season ' + name) ;

// Print the name of the current image

  print('Processing for ' + name + ' completed.');
  var waterGeom = water.geometry()

  var Selection = s1_filter.toList(1, i);
  var ImageSat = ee.ImageCollection(Selection)
                    .reduce(ee.Reducer.mean())
                    .clip(roi);

  var Index = id[i];
  var Basename = Index.split('/').pop();
// Use a new polygone (soil) for each image
  var histogram = ui.Chart.image.histogram({
    image: ImageSat,
    region: waterGeom,
    scale: 10,
    minBucketWidth: 1
  });

  // Personnaliser le graphique
  histogram.setOptions({
    title: 'Histogramme des valeurs de pixels pour l\'image ' + i,
    hAxis: {title: 'Valeur de pixel'},
    vAxis: {title: 'Fréquence'}
  });
// Afficher le graphique

print(histogram); } type here

0

There are 0 best solutions below