Assignment: Remote Sensing Theory - Earth Engine - TOA/SR

  • Due Jul 6, 2021 at 11:59pm
  • Points 25
  • Questions 4
  • Time Limit None
  • Allowed Attempts 2

Instructions

Plot top-of-atmosphere (TOA) reflectance at several locations

The Landsat sensor is in orbit approximately 700 kilometers above Earth.  The ratio of upward (reflected from the target at Earth's surface) radiance measured by the sensor to downward radiance from the sun is a unitless ratio called reflectance.  (In fact it's more complicated than that because radiance is a directional quantity, but this definition captures the basic idea).  Because this ratio is computed using whatever radiance the sensor measures (which may contain all sorts of atmospheric effects), it's called at-sensor or top-of-atmosphere (TOA) reflectance.  In this exercise, you will load TOA reflectance data and examine spectra at representative locations.

To get TOA data for Landsat, a transformation of digital numbers is performed as described in Chander et al. (2009).  This transformation is automatically done by Earth Engine.  Search for 'landsat 8 toa' and import the 'USGS Landsat 8 Collection 1 Tier 1 TOA Reflectance' ImageCollection.  Name the import 'toa'.  This collection stores TOA images which can be filtered as before, substituting 'toa' for 'landsat' as the collection variable.  

// Note that we need to cast the result of first() to Image.
var image_toa = ee.Image(toa
// Filter to get only images in the specified range. 
.filterDate('2014-01-01', '2014-12-31')
// Filter to get only images at the location of the point.
.filterBounds(point) 
// Sort the collection by a metadata property. 
.sort('CLOUD_COVER')
// Get the first image out of this collection.
.first()); 

print(image_toa);

Since reflectance is a unitless ratio in [0, 1], change the visualization parameters to correctly display the TOA data:

Map.addLayer(image_toa, {bands: ['B4', 'B3', 'B2'], min: 0, max: 0.3}, 'toa');
  • Using the Inspector, click several locations on the map and examine the resultant spectra.  It should be apparent, especially if you chart the spectra, that the scale of pixel values in different bands is drastically different.  Specifically, bands 10-11 are not in [0, 1].  The reason is that these are thermal bands, and are converted to brightness temperature, in Kelvin, as part of the TOA conversion.  Very little radiance is reflected in this wavelength range; most is emitted from the Earth's surface.  That emitted radiance can be used to estimate brightness temperature, using the inverted Planck equation.  Examine the temperature of various locations.  We will discuss brightness temperature more extensively later in the semester when we discuss thermal remote sensing.
  • Now adapt the Map.addLayer command and select just the first 9 bands of the TOA image before adding it to the map to get only bands 1-9:
Map.addLayer(image_toa.select('B([0-9])'), {bands: ['B4', 'B3', 'B2'], min: 0, max: 0.3}, 'toa_0-9');

 

  • To make plots of reflectance, select the reflective bands from the TOA image and use the Earth Engine charting API.  To see a customized chart of reflectance at a point in Oklahoma City, copy the following code:
// Use these bands. 
var bands = ['B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7', 'B10', 'B11'];
// Hardcode a point in Oklahoma City.
var OKC = ee.Geometry.Point([-97.4921, 35.3754]);

// Define reflective bands as bands B1-B7.  See the docs for slice().
var reflectiveBands = bands.slice(0, 7);

// See http://landsat.usgs.gov/band_designations_landsat_satellites.php
var wavelengths = [0.44, 0.48, 0.56, 0.65, 0.86, 1.61, 2.2];

// Select only the reflectance bands of interest.
var reflectanceImage = image_toa.select(reflectiveBands);

// Define an object of customization parameters for the chart.
var options = {
  title: 'Landsat 8 TOA spectrum in Oklahoma City',
  hAxis: {title: 'Wavelength (micrometers)'},
  vAxis: {title: 'Reflectance'},
  lineWidth: 1,
  pointSize: 4
};

// Make the chart, using a 30 meter pixel.
var chart = ui.Chart.image.regions(
  reflectanceImage, OKC, null, 30, null, wavelengths)
    .setOptions(options);

// Display the chart.
print(chart);

 

Only registered, enrolled users can take graded quizzes