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