Cloud Score+ S2_HARMONIZED V1

GOOGLE/CLOUD_SCORE_PLUS/V1/S2_HARMONIZED
Dataset Availability
2015-06-27T00:00:00Z–2024-12-21T13:00:45Z
Dataset Provider
Earth Engine Snippet
ee.ImageCollection("GOOGLE/CLOUD_SCORE_PLUS/V1/S2_HARMONIZED")

Description

Cloud Score+ is a quality assessment (QA) processor for medium-to-high resolution optical satellite imagery. The Cloud Score+ S2_HARMONIZED dataset is being operationally produced from the harmonized Sentinel-2 L1C collection, and Cloud Score+ outputs can be used to identify relatively clear pixels and effectively remove clouds and cloud shadows from L1C (Top-of-Atmosphere) or L2A (Surface Reflectance) imagery.

The Cloud Score+ S2_HARMONIZED dataset includes two QA bands, cs and cs_cdf, that both grade the usability of individual pixels with respect to surface visibility on a continuous scale between 0 and 1, where 0 represents "not clear" (occluded), while 1 represents "clear" (unoccluded) observations. The cs band scores QA based on a spectral distance between the observed pixel and a (theoretical) clear reference observation, while the cs_cdf band represents the likelihood an observed pixel is clear based on an estimated cumulative distribution of scores for a given location through time. In other words, cs can be thought of as a more instantaneous atmospheric similarity score (i.e., how similar is this pixel to what we'd expect to see in a perfectly a clear reference), while cs_cdf captures an expectation of the estimated score through time (i.e., if we had all the scores for this pixel through time, how would this score rank?).

Images in the Cloud Score+ S2_HARMONIZED collection have the same id and system:index properties as the individual Sentinel-2 L1C assets from which they were produced such that Cloud Score+ bands can be linked to source images based on their shared system:index.

Cloud Score+ backfill for the entire Sentinel-2 archive is currently in progress and Dataset Availability dates will be updated periodically as new results are added to the Cloud Score+ collection.

For more information about the Cloud Score+ dataset and modelling approach, see this Medium post.

Bands

Resolution
10 meters

Bands

Name Units Min Max Description
cs Dimensionless 0 1

Pixel quality score based on spectral distance from a (theoretical) clear reference

cs_cdf Dimensionless 0 1

Value of the cumulative distribution function of possible cs values for the estimated cs value

Image Properties

Image Properties

Name Type Description
DATE_PRODUCT_GENERATED STRING

Production date.

MGRS_TILE STRING

Sentinel-2 Military Grid Reference System ID.

MODEL_VERSION STRING

Cloud Score+ model version.

NO_CONTEXT_FRACTION DOUBLE

Fraction of subtiles processed with no temporal context.

PROCESSING_SOFTWARE_VERSION STRING

Cloud Score+ processing software version.

SOURCE_ASSET_ID STRING

Earth Engine Asset ID for source image.

SOURCE_PRODUCT_ID STRING

Sentinel-2 Product ID for source image.

Terms of Use

Terms of Use

CC-BY-4.0

Citations

Citations:
  • Pasquarella, V. J., Brown, C. F., Czerwinski, W., & Rucklidge, W. J. (2023) Comprehensive Quality Assessment of Optical Satellite Imagery Using Weakly Supervised Video Learning. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (pp. 2124-2134). PDF

Explore with Earth Engine

Code Editor (JavaScript)

// Harmonized Sentinel-2 Level 2A collection.
var s2 = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED');

// Cloud Score+ image collection. Note Cloud Score+ is produced from Sentinel-2
// Level 1C data and can be applied to either L1C or L2A collections.
var csPlus = ee.ImageCollection('GOOGLE/CLOUD_SCORE_PLUS/V1/S2_HARMONIZED');

// Region of interest.
var ROI = ee.Geometry.Point(-119.9087, 37.4159);

// Use 'cs' or 'cs_cdf', depending on your use case; see docs for guidance.
var QA_BAND = 'cs_cdf';

// The threshold for masking; values between 0.50 and 0.65 generally work well.
// Higher values will remove thin clouds, haze & cirrus shadows.
var CLEAR_THRESHOLD = 0.60;

// Make a clear median composite.
var composite = s2
    .filterBounds(ROI)
    .filterDate('2023-01-01', '2023-02-01')
    .linkCollection(csPlus, [QA_BAND])
    .map(function(img) {
      return img.updateMask(img.select(QA_BAND).gte(CLEAR_THRESHOLD));
    })
    .median();

// Sentinel-2 visualization parameters.
var s2Viz = {bands: ['B4', 'B3', 'B2'], min: 0, max: 2500};

Map.addLayer(composite, s2Viz, 'median composite');
Map.centerObject(ROI, 11);
Open in Code Editor