3

This question concerns the merging of the following Google Earth Engine collections:

  • USGS Landsat 5 TM Collection 1 Tier 1 Raw Scenes (LANDSAT/LT05/C01/T1)
  • USGS Landsat 7 Collection 1 Tier 1 Raw Scenes (LANDSAT/LE07/C01/T1)
  • USGS Landsat 8 Collection 1 Tier 1 Raw Scenes (LANDSAT/LC08/C01/T1)

I want to extend the "Landsat Simple Composite" example by loading similar collections from Landsat 5 and Landsat7, so that more years' composites are available. I tried to first merge these three collections into a big one, before passing it to the Simple Composite algorithm:

// Composite 6 months of Landsat 8.

var l5 = ee.ImageCollection("LANDSAT/LT05/C01/T1");

var l7 = ee.ImageCollection("LANDSAT/LE07/C01/T1");

// Note that the input to simpleComposite is raw data.
var l8 = ee.ImageCollection('LANDSAT/LC08/C01/T1');


var lall = ee.ImageCollection(l5.merge(l7).merge(l8));


// The asFloat parameter gives floating-point TOA output instead of
// the UINT8 outputs of the default simpleComposite().
var composite = ee.Algorithms.Landsat.simpleComposite({
  collection: lall.filterDate('2015-1-1', '2015-7-1'),
  asFloat: true
});

// Pick a spot with lots of clouds.
Map.setCenter(-47.6735, -0.6344, 12);
// Display a composite with a band combination chosen from:
// https://landsat.usgs.gov/how-do-landsat-8-band-combinations-differ-landsat-7-or-landsat-5-satellite-data
Map.addLayer(composite, {bands: ['B6', 'B5', 'B4'], max: [0.3, 0.4, 0.3]});

However, this returned the error:

Layer 1: Layer error: Image.visualize: No band named 'B6'. Available band names: [B1, B2, B3, B4, B5, B6_VCID_1, B6_VCID_2, B7, B8].

I see that the bands from these three collections are not the same, but on the other hand, l5.merge(l8) runs with no errors. What's the best way to merge these collections?

2
  • 2
    The reason 15.merge(l8) runs without errors is that L8 contains all the same band names as L5. However, L7 has two 'B6's: VCID_1 and VCID_2. You should also be careful to remap the bands to the correct names when you merge, because 'B1' for L5 is the blue band, but 'B2' for L8 is the blue band. I'm not sure the best way to go about the merge, but I'd probably make a new image collection for each, and select the appropriate bands so that each imagecollection has the same number of bands with the same names that map to the same wavelength ranges. Then do what you did here.
    – Jon
    Commented Oct 16, 2019 at 16:43
  • 3
    Please keep in mind that the dynamic range of these sensors are all different and need to be calibrated to make reflectance comparable. Also, OLI (Landsat 8) is 16 bit which really increases the dynamic range of the data in comparison to ETM+7 and TM5. If you dig around you can find the equation for correcting TM5 to ETM+7 but, I have not seen the calibration to correct previous sensors to OLI. As such, it is not so to treat the three sensors as single image collection. The bands do not even track between the sensors. Commented Oct 16, 2019 at 19:17

1 Answer 1

5

An option is to assign common names to the bands, here an example on a few bands:


// Assign a common name to the sensor-specific bands.
var LC8_BANDS = ['B2',   'B3',    'B4',  'B5',  'B6',    'B7',    'B10']; //Landsat 8
var LC7_BANDS = ['B1',   'B2',    'B3',  'B4',  'B5',    'B7',    'B6_VCID_2']; //Landsat 7
var LC5_BANDS = ['B1',   'B2',    'B3',  'B4',  'B5',    'B7',    'B6']; //Llandsat 5
var STD_NAMES = ['blue', 'green', 'red', 'nir', 'swir1', 'swir2', 'temp'];

var l8 = ee.ImageCollection('LANDSAT/LC08/C01/T1_TOA').select(LC8_BANDS, STD_NAMES)// Landsat 8
print(l8, 'Landsat 8')
var l7 = ee.ImageCollection('LANDSAT/LE07/C01/T1_TOA').select(LC7_BANDS, STD_NAMES) //Landsat 7
print(l7, 'Landsat 7')
var l5 = ee.ImageCollection('LANDSAT/LT05/C01/T1_TOA').select(LC5_BANDS, STD_NAMES) //Landsat 5
print(l5, 'Landsat 5')

var lall = ee.ImageCollection(l5.merge(l7).merge(l8));
print(lall, 'Merged')

There you will have the collections merged with no errors.

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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