I am making a image collection of NDVI from Landsat 5 over a particular location. I want to run a regression on each pixel through the NDVI using the per pixel NDVI value as the dependent variable and the year of image acquisition as the independent variable.
So far I am doing this:
// Define start and end dates and geometry to select images by
var start = '1984-05-01';
var end = '2011-09-30';
var polygon = ee.Geometry.Polygon([[
[-97.49404907226562, 46.59473135600069],
[-97.09442138671875, 46.59567501063883],
[-97.05734252929688, 46.31184150036163],
[-97.53524780273438, 46.30709840788667]
]]);
// function which will add a band to original image stack based on start year
function createTimeBand(img) {
var year = ee.Date(img.get('system:time_start')).get('year').subtract(1984);
return ee.Image(year).byte().addBands(img);
}
//Get an image collection of images of interest and add the band from function created above
var images = ee.ImageCollection('LANDSAT/LT5_L1T_TOA_FMASK')
.filterDate(start, end)
.filter(ee.Filter.dayOfYear(120, 275))
.filter(ee.Filter.eq('WRS_PATH', 30))
.filter(ee.Filter.eq('WRS_ROW', 28))
.filter(ee.Filter.lessThanOrEquals('CLOUD_COVER', 10))
.filterBounds(polygon).map(createTimeBand);
//make ndvi with a function
var make_ndvi = function(image) {
return image.normalizedDifference(['B4', 'B3']);
};
var ndvi = images.map(make_ndvi);
//get an image collection of the bands added which represent years since start of time series
function get_constant(images){
return images.select('constant');
}
var constants = images.map(get_constant)
This code results in two image collections with 103 images each. The collections are namedndvi
, and constants
and each have 1 band per image, I want to combine the individual bands from the two collections in a sort of zipped list (in python its called a zip list at least) so that my output is one image collection with 103 images and with two bands per image. Then I can use regression on the bands through the collection. This problem is similar to the linear_fit
code in the examples of Earth Engine, but I have to modify their code since I lose the original metadata when making NDVI. If I can keep the metadata when making my NDVI then I can solve it from there too.