1

I have put together a linear fit image for two arbitrary geometries in North America and Europe. I am seeing striping in these images when I look at the Grayscale single band "scale". Does anyone know why this is occurring? It doesn't make sense to me over this time series.

Here is a sample of code for yearly data and then the ndvi collection that was made for the linear fit.

var terra_2011 = terra.filterDate('2011-01-01', '2011-12-31').map(addTime);
var terra_bands_2011 = terra_2011.select('tmmx','pr','system:time_start');
var precip_accumulation_2011 = terra_bands_2011.select('system:time_start','pr').sum();
//Create min, max and Average tempearture bands and rename bands
var temp_minmax_2011 = terra_bands_2011.select('tmmx','system:time_start').reduce(ee.Reducer.minMax());
//print(temp_minmax_2011, 'max 2011');
var temp_avg_2011 = terra_bands_2011.select('tmmx','system:time_start').reduce(ee.Reducer.mean());
//print(temp_avg_2011, 'temp avg');
//Combine precip and temp bands into one "image"
var merge_climate_2011 = precip_accumulation_2011.addBands(temp_minmax_2011).addBands(temp_avg_2011);
//print(merge_climate_2011);
//Create NDVI composite image
var collection_2011= ee.ImageCollection('LANDSAT/LT05/C01/T1_TOA')
  .filterDate('2011-01-01','2011-12-31')
  .map(addQualityBand);
var only_NDVI_2011 = collection_2011.select('nd','system:time_start');
var ninety_five_percent_2011 = only_NDVI_2011.reduce(ee.Reducer.percentile([95]));
var eighty_five_percent_2011 = only_NDVI_2011.reduce(ee.Reducer.percentile([85]));
var median_2011 = only_NDVI_2011.reduce(ee.Reducer.median());
var mask95_2011 = ninety_five_percent_2011.select('nd_p95').gte(0.1);
var lte95_2011 = ninety_five_percent_2011.updateMask(mask95_2011);
var mask85_2011 = eighty_five_percent_2011.select('nd_p85').gte(0.1);
var lte85_2011 = eighty_five_percent_2011.updateMask(mask85_2011);
var mask50_2011 = median_2011.select('nd_median').gte(0.1);
var lte50_2011 = median_2011.updateMask(mask50_2011);
//Map.addLayer(lte95_2011, imageVisParam3, "95 mask_2011");

//Create Collection and Apply Linear Fit
var ndvi_collection = ee.ImageCollection([lte95_1990, lte95_1991,lte95_1992,lte95_1993,
  lte95_1994,lte95_1995, lte95_1996,lte95_1997,lte95_1998, lte95_1999,lte95_2000, lte95_2001,lte95_2002,
  lte95_2003,lte95_2004, lte95_2005,lte95_2006, lte95_2007,lte95_2008, lte95_2009,lte95_2010, lte95_2011]);
var linear_fit_ndvi = ndvi_collection.select(['system:time_start_p95', 'nd_p95'])
  .reduce(ee.Reducer.linearFit());
var fit_year = linear_fit_ndvi.expression(
  '31536000000 * SCALE', {
  'SCALE': linear_fit_ndvi.select('scale')
  });
////print(linear_fit_ndvi, 'linear fit');
//Map.addLayer(linear_fit_ndvi.clip(geometry), imageVisParam4, 'ndvi fit');
Map.addLayer(fit_year.clip(geometry), imageVisParam5, 'scaled fit');

Here is the link to the full script: https://code.earthengine.google.com/9d0aba5699739485b44d9dc2c2a2f79c

1

Maybe this is due to the BRDF effect (https://en.wikipedia.org/wiki/Bidirectional_reflectance_distribution_function). Those stripes are where Landsat paths/rows overlap each other. You will have twice the amount of imagery for those pixels. Half will have the satellite looking into the sun and the other half looking away.

When submitting questions, you really should try to provide the least amount of code needed to reproduce your problem. Chances are small that someone will wade through 600+ line of code to help you out.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.