Harmonized landsat 7 & 8

Surface reflectance sensor transformation functions

Landsat-7 and Landsat-8 have different sensor characteristics. This paper compared a large number of images and presents a transform function. Applying the function will help to improve temporal continuity between the Landsat-7 ETM + and Landsat-8 OLI sensor data.

// import the image collections
var l7 = ee.ImageCollection("LANDSAT/LE07/C01/T1_SR").filterBounds(geometry).sort("CLOUD_COVER").filterDate("1999-01-01","2003-01-01");
var l8 = ee.ImageCollection("LANDSAT/LC08/C01/T1_SR").filterBounds(geometry).sort("CLOUD_COVER");

// select first and rename the bands
var l7img = ee.Image(l7.first()).select(['B1', 'B2', 'B3', 'B4', 'B5', 'B7'],['blue', 'green', 'red', 'nir', 'swir1', 'swir2']).divide(10000);
var l8img = ee.Image(l8.first()).select(['B2','B3','B4','B5','B6','B7'],['blue', 'green', 'red', 'nir', 'swir1', 'swir2']).divide(10000);

// slope and intercept from roy et al. https://www.sciencedirect.com/science/article/pii/S0034425715302455
var slope = ee.Image.constant([0.9785, 0.9542, 0.9825, 1.0073, 1.0171, 0.9949]); // create an image of slopes per band for L8 TO L7 regression line - David Roy
var intercept = ee.Image.constant([-0.0095, -0.0016, -0.0022, -0.0021, -0.0030, 0.0029]); // create an image of y-intercepts per band for L8 TO L7 regression line - David Roy

// apply regression to landsat-8 image
var l8tol7 = l8img.subtract(intercept.divide(slope));

// display the image
Map.addLayer(l7img,{min:0,max:0.3,bands:"red,green,blue"},"l7 image");
Map.addLayer(l8img,{min:0,max:0.3,bands:"red,green,blue"},"l8 image");
Map.addLayer(l8tol7,{min:0,max:0.3,bands:"red,green,blue"},"l8 image harmonized")

link

Advertisements

5 comments

  1. Thank you very much for your GEE script. I was just wondering why you picked reduced major axis (RMA) regression coefficients instead of ordinary least squares (OLS) regression ones tabled in Roy et al paper to harmonize L8 and L7. The authors state that the former coefficients were used throughout the paper to draw statistical conclusions thanks to the symmetrical nature of the RMA regression, and the latter one were “…provided so that the user community may apply them in their own research.”. Aren’t OLS coefficients more advisable to use?

    Like

  2. Hey, is there a error?
    This line:
    var l8tol7 = l8img.subtract(intercept.divide(slope));

    Should be:
    var l8tol7 = l8img.subtract(intercept).divide(slope);

    Like

  3. Hey, is there a error?
    This line:
    var l8tol7 = l8img.subtract(intercept.divide(slope));

    Should be:
    var l8tol7 = l8img.subtract(intercept).divide(slope);

    Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s