For the evalscript
posted below, i introduced the method cloudy()
to eliminate the cloudy pixels from the tiff. in other words, i want have a tiff file contains ndvi values where
the pixels values in the tiff are not covered with clouds.
at the run time, i receive empty tiff.
can you please point out what i am doing wron?
eval-script:
`//VERSION=3
// Script to extract a time series of NDVI values using
// Sentinel 2 Level 2A data and metadata file.
function setup() {
return {
input: [{
bands: ["B04", "B08", "CLD"],
units: "DN"
}],
output: [
{
id: "default",
bands: 1,
sampleType: "FLOAT32",
nodataValue: NaN,
},
],
mosaicking: Mosaicking.ORBIT
}
}
function cloudy(samples) {
let isCloudy = false;
samples.forEach((sample) => {
if (sample.CLD > 0) isCloudy = true;
});
return isCloudy;
}
function evaluatePixel(samples) {
if (samples.length < 1) return [NaN];
if (cloudy(samples)) return [NaN];
// Precompute an array to contain NDVI observations
var n_observations = samples.length;
let ndvi = new Array(n_observations).fill(NaN);
//Fill the array with NDVI values
samples.forEach((sample, index) => {
ndvi[index] = (sample.B08 - sample.B04) / (sample.B08 + sample.B04) ;
});
// get average over the collected ndvi values:
let sum = 0;
for(let i = 0;i < ndvi.length; i++) {
sum += ndvi[i];
}
let avg = sum / ndvi.length;
return [avg];
}`