Harmonized Sentinel-2 MSI: MultiSpectral Instrument, Level-1C

COPERNICUS/S2_HARMONIZED
Dataset Availability
2015-06-27T00:00:00Z–2024-12-21T16:19:13Z
Dataset Provider
Earth Engine Snippet
ee.ImageCollection("COPERNICUS/S2_HARMONIZED")
Revisit Interval
5 Days
Tags
copernicus esa eu msi radiance sentinel

Description

After 2022-01-25, Sentinel-2 scenes with PROCESSING_BASELINE '04.00' or above have their DN (value) range shifted by 1000. The HARMONIZED collection shifts data in newer scenes 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 data contain 13 UINT16 spectral bands representing TOA reflectance scaled by 10000. See the Sentinel-2 User Handbook for details. QA60 is a bitmask band that contained rasterized cloud mask polygons until Feb 2022, when these polygons stopped being produced. Starting in February 2024, 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..

Each Sentinel-2 product (zip archive) may contain multiple granules. Each granule becomes a separate Earth Engine asset. EE asset ids for Sentinel-2 assets have the following format: COPERNICUS/S2/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).

The Level-2 data produced by ESA can be found in the collection COPERNICUS/S2_SR.

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 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

B10 0.0001 60 meters 1373.5nm (S2A) / 1376.9nm (S2B)

Cirrus

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

QA10 10 meters

Always empty

QA20 20 meters

Always empty

QA60 60 meters

Cloud mask. Masked out between February 2022 and February 2024.

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.

Image Properties

Image Properties

Name Type Description
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

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)

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

MGRS_TILE STRING

US-Military Grid Reference System (MGRS) tile

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

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

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

SPACECRAFT_NAME STRING

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

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);
}

// Map the function over a month of data and take the median.
// Load Sentinel-2 TOA reflectance data (adjusted for processing changes
// that occurred after 2022-01-25).
var dataset = ee.ImageCollection('COPERNICUS/S2_HARMONIZED')
                  .filterDate('2022-01-01', '2022-01-31')
                  // Pre-filter to get less cloudy granules.
                  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
                  .map(maskS2clouds);

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

Map.setCenter(-9.1695, 38.6917, 12);
Map.addLayer(dataset.median(), rgbVis, '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_HARMONIZED')
    .filterDate('2022-01-01', '2022-01-31')
    # Pre-filter to get less cloudy granules.
    .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20))
    .map(mask_s2_clouds)
)

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

m = geemap.Map()
m.set_center(-9.1695, 38.6917, 12)
m.add_layer(dataset.median(), rgb_vis, 'RGB')
m
Open in Code Editor