Sentinel-2 MSI: MultiSpectral Instrument, Level-2A [deprecated]

COPERNICUS/S2_SR
Dataset Availability
2017-03-28T00:00:00Z–2024-12-20T15:25:22Z
Dataset Provider
Earth Engine Snippet
ee.ImageCollection("COPERNICUS/S2_SR")
Revisit Interval
5 Days
Tags
copernicus
esa
eu
msi
reflectance
sentinel
sr

Description

See also collection COPERNICUS/S2_SR_HARMONIZED that shifts data with PROCESSING_BASELINE '04.00' or above (after 2022-01-25) to be in the same range as in older scenes.

Sentinel-2 is a wide-swath, high-resolution, multi-spectral imaging mission supporting Copernicus Land Monitoring studies, including the monitoring of vegetation, soil and water cover, as well as observation of inland waterways and coastal areas.

The Sentinel-2 L2 data are downloaded from CDSE. They were computed by running sen2cor. WARNING: 2017-2018 L2 coverage in the EE collection is not yet global.

The assets contain 12 UINT16 spectral bands representing SR scaled by 10000 (unlike in L1 data, there is no B10). There are also several more L2-specific bands (see band list for details). See the Sentinel-2 User Handbook for details.

QA60 is a bitmask band that contained rasterized cloud mask polygons until 2022-01-25, when these polygons stopped being produced. Starting 2024-02-28, legacy-consistent QA60 bands are constructed from the MSK_CLASSI cloud classification bands. For more details, see the full explanation of how cloud masks are computed.

EE asset ids for Sentinel-2 L2 assets have the following format: COPERNICUS/S2_SR/20151128T002653_20151128T102149_T56MNN. Here the first numeric part represents the sensing date and time, the second numeric part represents the product generation date and time, and the final 6-character string is a unique granule identifier indicating its UTM grid reference (see MGRS).

For datasets to assist with cloud and/or cloud shadow detection, see COPERNICUS/S2_CLOUD_PROBABILITY and GOOGLE/CLOUD_SCORE_PLUS/V1/S2_HARMONIZED.

For more details on Sentinel-2 radiometric resolution, see this page.

Bands

Bands

Name Units Min Max Scale Pixel Size Wavelength Description
B1 0.0001 60 meters 443.9nm (S2A) / 442.3nm (S2B)

Aerosols

B2 0.0001 10 meters 496.6nm (S2A) / 492.1nm (S2B)

Blue

B3 0.0001 10 meters 560nm (S2A) / 559nm (S2B)

Green

B4 0.0001 10 meters 664.5nm (S2A) / 665nm (S2B)

Red

B5 0.0001 20 meters 703.9nm (S2A) / 703.8nm (S2B)

Red Edge 1

B6 0.0001 20 meters 740.2nm (S2A) / 739.1nm (S2B)

Red Edge 2

B7 0.0001 20 meters 782.5nm (S2A) / 779.7nm (S2B)

Red Edge 3

B8 0.0001 10 meters 835.1nm (S2A) / 833nm (S2B)

NIR

B8A 0.0001 20 meters 864.8nm (S2A) / 864nm (S2B)

Red Edge 4

B9 0.0001 60 meters 945nm (S2A) / 943.2nm (S2B)

Water vapor

B11 0.0001 20 meters 1613.7nm (S2A) / 1610.4nm (S2B)

SWIR 1

B12 0.0001 20 meters 2202.4nm (S2A) / 2185.7nm (S2B)

SWIR 2

AOT 0.001 10 meters

Aerosol Optical Thickness

WVP cm 0.001 10 meters

Water Vapor Pressure. The height the water would occupy if the vapor were condensed into liquid and spread evenly across the column.

SCL 1 11 20 meters

Scene Classification Map (The "No Data" value of 0 is masked out)

TCI_R 10 meters

True Color Image, Red channel

TCI_G 10 meters

True Color Image, Green channel

TCI_B 10 meters

True Color Image, Blue channel

MSK_CLDPRB 0 100 20 meters

Cloud Probability Map (missing in some products)

MSK_SNWPRB 0 100 10 meters

Snow Probability Map (missing in some products)

QA10 10 meters

Always empty

QA20 20 meters

Always empty

QA60 60 meters

Cloud mask. Masked out between 2022-01-25 to 2024-02-28 inclusive.

MSK_CLASSI_OPAQUE 60 meters

Opaque clouds classification band (0=no clouds, 1=clouds). Masked out before February 2024.

MSK_CLASSI_CIRRUS 60 meters

Cirrus clouds classification band (0=no clouds, 1=clouds). Masked out before February 2024.

MSK_CLASSI_SNOW_ICE 60 meters

Snow/ice classification band (0=no snow/ice, 1=snow/ice). Masked out before February 2024.

SCL Class Table

Value Color Description
1 #ff0004 Saturated or defective
2 #868686 Dark Area Pixels
3 #774b0a Cloud Shadows
4 #10d22c Vegetation
5 #ffff52 Bare Soils
6 #0000ff Water
7 #818181 Clouds Low Probability / Unclassified
8 #c0c0c0 Clouds Medium Probability
9 #f1f1f1 Clouds High Probability
10 #bac5eb Cirrus
11 #52fff9 Snow / Ice

Image Properties

Image Properties

Name Type Description
AOT_RETRIEVAL_ACCURACY DOUBLE

Accuracy of Aerosol Optical thickness model

CLOUDY_PIXEL_PERCENTAGE DOUBLE

Granule-specific cloudy pixel percentage taken from the original metadata

CLOUD_COVERAGE_ASSESSMENT DOUBLE

Cloudy pixel percentage for the whole archive that contains this granule. Taken from the original metadata

CLOUDY_SHADOW_PERCENTAGE DOUBLE

Percentage of pixels classified as cloud shadow

DARK_FEATURES_PERCENTAGE DOUBLE

Percentage of pixels classified as dark features or shadows

DATASTRIP_ID STRING

Unique identifier of the datastrip Product Data Item (PDI)

DATATAKE_IDENTIFIER STRING

Uniquely identifies a given Datatake. The ID contains the Sentinel-2 satellite, start date and time, absolute orbit number, and processing baseline.

DATATAKE_TYPE STRING

MSI operation mode

DEGRADED_MSI_DATA_PERCENTAGE DOUBLE

Percentage of degraded MSI and ancillary data

FORMAT_CORRECTNESS STRING

Synthesis of the On-Line Quality Control (OLQC) checks performed at granule (Product_Syntax) and datastrip (Product Syntax and DS_Consistency) levels

GENERAL_QUALITY STRING

Synthesis of the OLQC checks performed at the datastrip level (Relative_Orbit_Number)

GENERATION_TIME DOUBLE

Product generation time

GEOMETRIC_QUALITY STRING

Synthesis of the OLQC checks performed at the datastrip level (Attitude_Quality_Indicator)

GRANULE_ID STRING

Unique identifier of the granule PDI (PDI_ID)

HIGH_PROBA_CLOUDS_PERCENTAGE DOUBLE

Percentage of pixels classified as high probability clouds

MEAN_INCIDENCE_AZIMUTH_ANGLE_B1 DOUBLE

Mean value containing viewing incidence azimuth angle average for band B1 and for all detectors

MEAN_INCIDENCE_AZIMUTH_ANGLE_B2 DOUBLE

Mean value containing viewing incidence azimuth angle average for band B2 and for all detectors

MEAN_INCIDENCE_AZIMUTH_ANGLE_B3 DOUBLE

Mean value containing viewing incidence azimuth angle average for band B3 and for all detectors

MEAN_INCIDENCE_AZIMUTH_ANGLE_B4 DOUBLE

Mean value containing viewing incidence azimuth angle average for band B4 and for all detectors

MEAN_INCIDENCE_AZIMUTH_ANGLE_B5 DOUBLE

Mean value containing viewing incidence azimuth angle average for band B5 and for all detectors

MEAN_INCIDENCE_AZIMUTH_ANGLE_B6 DOUBLE

Mean value containing viewing incidence azimuth angle average for band B6 and for all detectors

MEAN_INCIDENCE_AZIMUTH_ANGLE_B7 DOUBLE

Mean value containing viewing incidence azimuth angle average for band B7 and for all detectors

MEAN_INCIDENCE_AZIMUTH_ANGLE_B8 DOUBLE

Mean value containing viewing incidence azimuth angle average for band B8 and for all detectors

MEAN_INCIDENCE_AZIMUTH_ANGLE_B8A DOUBLE

Mean value containing viewing incidence azimuth angle average for band B8a and for all detectors

MEAN_INCIDENCE_AZIMUTH_ANGLE_B9 DOUBLE

Mean value containing viewing incidence azimuth angle average for band B9 and for all detectors

MEAN_INCIDENCE_AZIMUTH_ANGLE_B10 DOUBLE

Mean value containing viewing incidence azimuth angle average for band B10 and for all detectors

MEAN_INCIDENCE_AZIMUTH_ANGLE_B11 DOUBLE

Mean value containing viewing incidence azimuth angle average for band B11 and for all detectors

MEAN_INCIDENCE_AZIMUTH_ANGLE_B12 DOUBLE

Mean value containing viewing incidence azimuth angle average for band B12 and for all detectors

MEAN_INCIDENCE_ZENITH_ANGLE_B1 DOUBLE

Mean value containing viewing incidence zenith angle average for band B1 and for all detectors

MEAN_INCIDENCE_ZENITH_ANGLE_B2 DOUBLE

Mean value containing viewing incidence zenith angle average for band B2 and for all detectors

MEAN_INCIDENCE_ZENITH_ANGLE_B3 DOUBLE

Mean value containing viewing incidence zenith angle average for band B3 and for all detectors

MEAN_INCIDENCE_ZENITH_ANGLE_B4 DOUBLE

Mean value containing viewing incidence zenith angle average for band B4 and for all detectors

MEAN_INCIDENCE_ZENITH_ANGLE_B5 DOUBLE

Mean value containing viewing incidence zenith angle average for band B5 and for all detectors

MEAN_INCIDENCE_ZENITH_ANGLE_B6 DOUBLE

Mean value containing viewing incidence zenith angle average for band B6 and for all detectors

MEAN_INCIDENCE_ZENITH_ANGLE_B7 DOUBLE

Mean value containing viewing incidence zenith angle average for band B7 and for all detectors

MEAN_INCIDENCE_ZENITH_ANGLE_B8 DOUBLE

Mean value containing viewing incidence zenith angle average for band B8 and for all detectors

MEAN_INCIDENCE_ZENITH_ANGLE_B8A DOUBLE

Mean value containing viewing incidence zenith angle average for band B8a and for all detectors

MEAN_INCIDENCE_ZENITH_ANGLE_B9 DOUBLE

Mean value containing viewing incidence zenith angle average for band B9 and for all detectors

MEAN_INCIDENCE_ZENITH_ANGLE_B10 DOUBLE

Mean value containing viewing incidence zenith angle average for band B10 and for all detectors

MEAN_INCIDENCE_ZENITH_ANGLE_B11 DOUBLE

Mean value containing viewing incidence zenith angle average for band B11 and for all detectors

MEAN_INCIDENCE_ZENITH_ANGLE_B12 DOUBLE

Mean value containing viewing incidence zenith angle average for band B12 and for all detectors

MEAN_SOLAR_AZIMUTH_ANGLE DOUBLE

Mean value containing sun azimuth angle average for all bands and detectors

MEAN_SOLAR_ZENITH_ANGLE DOUBLE

Mean value containing sun zenith angle average for all bands and detectors

MEDIUM_PROBA_CLOUDS_PERCENTAGE DOUBLE

Percentage of pixels classified as medium probability clouds

MGRS_TILE STRING

US-Military Grid Reference System (MGRS) tile

NODATA_PIXEL_PERCENTAGE DOUBLE

Percentage of No Data pixels

NOT_VEGETATED_PERCENTAGE DOUBLE

Percentage of pixels classified as non-vegetated

PROCESSING_BASELINE STRING

Configuration baseline used at the time of the product generation in terms of processor software version and major Ground Image Processing Parameters (GIPP) version

PRODUCT_ID STRING

The full id of the original Sentinel-2 product

RADIATIVE_TRANSFER_ACCURACY DOUBLE

Accuracy of radiative transfer model

RADIOMETRIC_QUALITY STRING

Based on the OLQC reports contained in the Datastrips/QI_DATA with RADIOMETRIC_QUALITY checklist name

REFLECTANCE_CONVERSION_CORRECTION DOUBLE

Earth-Sun distance correction factor

SATURATED_DEFECTIVE_PIXEL_PERCENTAGE DOUBLE

Percentage of saturated or defective pixels

SENSING_ORBIT_DIRECTION STRING

Imaging orbit direction

SENSING_ORBIT_NUMBER DOUBLE

Imaging orbit number

SENSOR_QUALITY STRING

Synthesis of the OLQC checks performed at granule (Missing_Lines, Corrupted_ISP, and Sensing_Time) and datastrip (Degraded_SAD and Datation_Model) levels

SOLAR_IRRADIANCE_B1 DOUBLE

Mean solar exoatmospheric irradiance for band B1

SOLAR_IRRADIANCE_B2 DOUBLE

Mean solar exoatmospheric irradiance for band B2

SOLAR_IRRADIANCE_B3 DOUBLE

Mean solar exoatmospheric irradiance for band B3

SOLAR_IRRADIANCE_B4 DOUBLE

Mean solar exoatmospheric irradiance for band B4

SOLAR_IRRADIANCE_B5 DOUBLE

Mean solar exoatmospheric irradiance for band B5

SOLAR_IRRADIANCE_B6 DOUBLE

Mean solar exoatmospheric irradiance for band B6

SOLAR_IRRADIANCE_B7 DOUBLE

Mean solar exoatmospheric irradiance for band B7

SOLAR_IRRADIANCE_B8 DOUBLE

Mean solar exoatmospheric irradiance for band B8

SOLAR_IRRADIANCE_B8A DOUBLE

Mean solar exoatmospheric irradiance for band B8a

SOLAR_IRRADIANCE_B9 DOUBLE

Mean solar exoatmospheric irradiance for band B9

SOLAR_IRRADIANCE_B10 DOUBLE

Mean solar exoatmospheric irradiance for band B10

SOLAR_IRRADIANCE_B11 DOUBLE

Mean solar exoatmospheric irradiance for band B11

SOLAR_IRRADIANCE_B12 DOUBLE

Mean solar exoatmospheric irradiance for band B12

SNOW_ICE_PERCENTAGE DOUBLE

Percentage of pixels classified as snow or ice

SPACECRAFT_NAME STRING

Sentinel-2 spacecraft name: Sentinel-2A, Sentinel-2B

THIN_CIRRUS_PERCENTAGE DOUBLE

Percentage of pixels classified as thin cirrus clouds

UNCLASSIFIED_PERCENTAGE DOUBLE

Percentage of unclassified pixels

VEGETATION_PERCENTAGE DOUBLE

Percentage of pixels classified as vegetation

WATER_PERCENTAGE DOUBLE

Percentage of pixels classified as water

WATER_VAPOUR_RETRIEVAL_ACCURACY DOUBLE

Declared accuracy of the Water Vapor model

Terms of Use

Terms of Use

The use of Sentinel data is governed by the Copernicus Sentinel Data Terms and Conditions.

Explore with Earth Engine

Code Editor (JavaScript)

/**
 * Function to mask clouds using the Sentinel-2 QA band
 * @param {ee.Image} image Sentinel-2 image
 * @return {ee.Image} cloud masked Sentinel-2 image
 */
function maskS2clouds(image) {
  var qa = image.select('QA60');

  // Bits 10 and 11 are clouds and cirrus, respectively.
  var cloudBitMask = 1 << 10;
  var cirrusBitMask = 1 << 11;

  // Both flags should be set to zero, indicating clear conditions.
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0)
      .and(qa.bitwiseAnd(cirrusBitMask).eq(0));

  return image.updateMask(mask).divide(10000);
}

var dataset = ee.ImageCollection('COPERNICUS/S2_SR')
                  .filterDate('2020-01-01', '2020-01-30')
                  // Pre-filter to get less cloudy granules.
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE',20))
                  .map(maskS2clouds);

var visualization = {
  min: 0.0,
  max: 0.3,
  bands: ['B4', 'B3', 'B2'],
};

Map.setCenter(83.277, 17.7009, 12);

Map.addLayer(dataset.mean(), visualization, 'RGB');

Python setup

See the Python Environment page for information on the Python API and using geemap for interactive development.

import ee
import geemap.core as geemap

Colab (Python)

def mask_s2_clouds(image):
  """Masks clouds in a Sentinel-2 image using the QA band.

  Args:
      image (ee.Image): A Sentinel-2 image.

  Returns:
      ee.Image: A cloud-masked Sentinel-2 image.
  """
  qa = image.select('QA60')

  # Bits 10 and 11 are clouds and cirrus, respectively.
  cloud_bit_mask = 1 << 10
  cirrus_bit_mask = 1 << 11

  # Both flags should be set to zero, indicating clear conditions.
  mask = (
      qa.bitwiseAnd(cloud_bit_mask)
      .eq(0)
      .And(qa.bitwiseAnd(cirrus_bit_mask).eq(0))
  )

  return image.updateMask(mask).divide(10000)


dataset = (
    ee.ImageCollection('COPERNICUS/S2_SR')
    .filterDate('2020-01-01', '2020-01-30')
    # Pre-filter to get less cloudy granules.
    .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
    .map(mask_s2_clouds)
)

visualization = {
    'min': 0.0,
    'max': 0.3,
    'bands': ['B4', 'B3', 'B2'],
}

m = geemap.Map()
m.set_center(83.277, 17.7009, 12)
m.add_layer(dataset.mean(), visualization, 'RGB')
m
Open in Code Editor