Dynamic Surface Water Extent from Harmonized Landsat Sentinel-2 (DSWx-HLS) V1

OPERA/DSWX/L3_V1/HLS
Dataset Availability
2023-04-04T04:37:01Z–2026-02-24T23:58:28Z
Dataset Producer
Earth Engine Snippet
ee.ImageCollection("OPERA/DSWX/L3_V1/HLS")
Tags
geophysical landsat-derived nasa opera sentinel2-derived surface surface-ground-water water

Description

This dataset contains Level-3 Dynamic OPERA surface water extent product version 1. The data are validated surface water extent observations beginning April 2023. Known issues and caveats on usage are described in the product documentation. The input dataset for generating each product is the Harmonized Landsat-8 and Sentinel-2A/B/C (HLS) product version 2.0. HLS products provide surface reflectance (SR) data from the Operational Land Imager (OLI) aboard the Landsat 8 satellite and the MultiSpectral Instrument (MSI) aboard the Sentinel-2A/B/C satellite.

Documentation:

Bands

Pixel Size
30 meters

Bands

Name Pixel Size Description
WTR_Water_classification meters

Water Classification - This represents pixel-wise classification into one of three water classes (not water, open water, and partial surface water), snow/ice, cloud/cloud shadow and adjacent to cloud/cloud shadow, ocean masked, or no data classes as a result of processing the diagnostic (DIAG) layer through all intermediate steps/layers

BWTR_Binary_water meters

The binary water map is derived from the WTR layer as a union of water classes (open water and partial surface water) into a binary map indicating areas with and without water. This layer is meant to provide users with a quick view for water/no-water. Invalid data classes (snow/ice, cloud/cloud shadow along with adjacent to cloud/cloud shadow, ocean masked, and fill value) are also provided to indicate areas in which the binary classification does not provide water/no-water classification.

CONF_Confidence meters

A representation of the confidence associated with the WTR classification that is based on a combination of DIAG results and quality assurance information provided with the input HLS data. For example, the Open water class of the WTR layer is split into two classes: High Confidence and Moderate Confidence while WTR Partial surface water class pixels of WTR are flagged as either partial surface water conservative or partial surface water aggressive, with the latter exhibiting less certainty. As in the WTR and BWTR layers, pixels for which water retrievals are difficult or impossible due to snow/ice, cloud/shadow, or fill values are also noted in the CONF layer.

DIAG_diagnostic meters

A layer coded to indicate which of five initial DSWx-HLS tests were positive for water detection on a per-pixel basis. Values range from 0 (i.e, 00000), indicating that none of the five DSWx-HLS tests returned a positive result, to 11111, denoting that all tests resulted positive. The tests are described in DSWX-HLS ATBD and Jones, John W. 2019 are used to derive the confidence layer above. The combination of positive tests for a particular class determines its confidence value. The Fill value (no data) is represented by the number 65535.

WTR1_Interpretation_of_diagnostic_layer_into_water_classes meters

Classification of the DIAG layer results in open water, partial surface water, and no-water. This layer is further refined through the application of masks resulting in Layers 6 (WTR-2) and 1 (WTR).

WTR2_Refined_WTR1_given_HLS_FMASK meters

The WTR-2 layer is derived from the WTR-1 (Layer 5) outcome by applying additional tests based on land cover and terrain shadow information, and aerosol overcorrection mitigation, as described in DSWX-HLS ATBD and Jones, John W. 2019 to mask (eliminate) false-positive water detections.

LAND_land_cover_classification meters

Land cover thematic layer used to determine where additional testing is performed to potentially mask WTR-1 layer water detections to produce the intermediate WTR-2 layer.

SHAD_terrain_shadow meters

Mask used to eliminate likely locations of terrain-induced shadow based on a classification of shadow areas generated for the capture date/time of the input HLS image from Digital Elevation Model data. This is used in the creation of the intermediate layer WTR-2.

HLS_CLOUD_SNOW_FMASK_classification meters

Cloud, cloud-shadow, and snow/ice classification layer from HLS input.

WTR_Water_classification Class Table

Value Color Description
0 #ffffff

Not water - An area with valid reflectance data that is not water, snow/ice, cloud/cloud shadow, or ocean mask, a landcover masked may be applied.

1 #0000ff

Open water - an area that is entirely water and unobstructed to the sensor, including obstructions by vegetation, terrain, and buildings.

2 #0088ff

Partial surface water - an inundated area that is at least 20% and less than 100% open water. This may be referred to as "subpixel inundation" when referring to a pixel’s area. Examples include wetlands, water bodies with emergent vegetation, and pixels bisected by coastlines.

252 #f2f2f2

Snow/ice - an area identified as snow/ice according to input HLS Fmask quality assurance (QA) data.

253 #dfdfdf

Cloud/cloud shadow - an area identified as cloud, cloud shadow, or adjacent to those features according to input HLS Fmask quality assurance (QA) data.

254 #da00ff

Ocean masked - an area identified as ocean using a shoreline database with an added margin.

BWTR_Binary_water Class Table

Value Color Description
0 #ffffff

Not water - an area with valid reflectance data that is not water (class 1) and not snow/ice (class 252), cloud/cloud shadow (class 253), or ocean masked (class 254).

1 #0000ff

Water - an area classified as "open water" or "partial surface water" (see WTR layer).

252 #f2f2f2

Snow/ice - an area identified as snow/ice according to input HLS Fmask quality assurance (QA) data.

253 #dfdfdf

Cloud/cloud shadow - an area identified as cloud or cloud shadow or adjacent to cloud/cloud shadow according to input HLS Fmask quality assurance (QA) data.

254 #da00ff

Ocean masked - an area identified as ocean using a shoreline database with an added margin

CONF_Confidence Class Table

Value Color Description
0 #ffffff

Not water - an area with valid reflectance data that is not water or ocean masked (class 254) and is not identified as snow/ice, cloud/cloud shadow, adjacent to cloud/cloud shadow, or snow/ice in the input HLS Fmask quality assurance (QA) data. "not water" (class 0) also exists where terrain shadow and/or land cover masking is applied.

1 #0000ff

Open water high-confidence - an area that is entirely water with high-confidence that has not also been ocean masked (class 254) and is not identified as snow/ice, cloud/cloud shadow, adjacent to cloud/cloud shadow, or snow/ice in the input HLS Fmask quality assurance (QA) data.

2 #0088ff

Open water moderate-confidence - an area that is entirely water with moderate-confidence that has not also been ocean masked (class 254) and is not identified as snow/ice, or cloud/cloud shadow, adjacent to cloud/cloud shadow, or snow/ice in the input HLS Fmask quality assurance (QA) data.

3 #66a3ff

Partial surface water conservative - an inundated area that is at least approximately 50% and less than 100% open water with a conservative classification that has not also been ocean masked (class 254) and is not identified as snow/ice, cloud/cloud shadow'

4 #b3d9ff

Partial surface water aggressive - an inundated area that is at least approximately 20% and less than 100% open water with an aggressive classification that has not also been ocean masked (class 254) and is not identified as snow/ice, cloud/cloud shadow

10 #cccccc

Not water - an area with valid reflectance data that is not water or ocean masked (class 254) but is potentially obstructed by cloud/cloud shadow according to the input HLS Fmask

11 #0000ff

Open water high-confidence - an area that is entirely water with high-confidence that has not also been ocean masked (class 254) but is potentially obstructed by cloud/cloud shadow according to the input HLS Fmask.

12 #00aaff

Open water moderate-confidence - an area that is entirely water with moderate-confidence that has not also been ocean masked (class 254) but is potentially obstructed by cloud/cloud shadow according to the input HLS Fmask.

13 #2244ff

Partial surface water conservative - an inundated area that is at least approximately 50% and less than 100% open water with a conservative classification that has not also been ocean masked (class 254) but is potentially obstructed by cloud/cloud shadow according to the input HLS Fmask.

14 #6644ff

Partial surface water aggressive - an inundated area that is at least 20% and less than approximately 50% open water and less than 100% open water with a less strict classification that has not also been ocean masked (class 254) but is potentially obstructed by cloud/cloud shadow according to the input HLS Fmask.

20 #ffffff

Not water - an area with valid reflectance data that is not water, that is marked as snow/ice according to the input HLS Fmask, but not obstructed by cloud/cloud shadow according to the input HLS Fmask and is not ocean masked (class 254). "not water" (class 0) also exists where terrain shadow and/or land cover masking is applied.

21 #0000ff

Open water high-confidence - an area that is entirely water with high-confidence and that is marked as snow/ice according to the input HLS Fmask, but not obstructed by cloud/cloud shadow according to the input HLS Fmask and is not ocean masked (class 254)

22 #5555ff

Open water moderate-confidence - an area that is entirely water with moderate-confidence and that is marked as snow/ice according to the input HLS Fmask, but not obstructed by cloud/cloud shadow according to the input HLS Fmask and is not ocean masked (class 254).

23 #7777ff

Partial surface water conservative - an inundated area that is at least 50% and less than 100% open water with a conservative classification and that is marked as snow/ice according to the input HLS Fmask, but not obstructed by cloud/cloud shadow according to the input HLS Fmask and is not ocean masked (class 254).

24 #2222cc

Partial surface water aggressive - an inundated area that is at least 20% and less than approximately 50% open water, that is a less strict classification and that is marked as snow/ice according to the input HLS Fmask, but not obstructed by cloud/cloud shadow according to the input HLS Fmask and is not ocean masked (class 254).

254 #da00ff

Ocean masked - an area identified as ocean using a shoreline database with an added margin.

WTR1_Interpretation_of_diagnostic_layer_into_water_classes Class Table

Value Color Description
0 #ffffff

Not water - an area with valid reflectance data that is not open water (class 1) or partial surface water (class 2).

1 #0000ff

Open water - an area that is entirely water and unobstructed to the sensor, including obstructions by vegetation, terrain, and buildings.

2 #0088ff

Partial surface water - an inundated area that is at least 20% and less than 100% open water. This may be referred to as "subpixel inundation" when referring to a pixel's area. Examples include wetlands, water bodies with emergent vegetation, and pixels bisected by coastlines.

254 #da00ff

Ocean masked - an area identified as ocean using a shoreline database with an added margin (not applicable for the standard DSWx-HLS product v1.0).

WTR2_Refined_WTR1_given_HLS_FMASK Class Table

Value Color Description
0 #ffffff

Not water - an area with valid reflectance data that is not open water (class 1) or partial surface water (class 2)

1 #0000ff

Open water - an area that is entirely water and unobstructed to the sensor, including obstructions by vegetation, terrain, and buildings.

2 #0088ff

Partial surface water - an inundated area that is at least 20% and less than 100% open water. This may be referred to as "subpixel inundation" when referring to a pixel's area. Examples include wetlands, water bodies with emergent vegetation, and pixels bisected by coastlines.

254 #da00ff

Ocean masked - an area identified as ocean using a shoreline database with an added margin.

LAND_land_cover_classification Class Table

Value Color Description
0 #e6e6e6

Low intensity developed. Values range from 0 to 99 (number = last two digits of ESA WorldCover dataset year)

100 #cccccc

High intensity developed. Values range from 100 to 199. (number = 100 + last two digits of ESA WorldCover dataset year)

200 #0000ff

Water, wetland, mangrove forest

201 #00ff00

A variety of forest classes

SHAD_terrain_shadow Class Table

Value Color Description
0 #808080

Shadow

1 #ffffff

Not shadow

HLS_CLOUD_SNOW_FMASK_classification Class Table

Value Color Description
0 #ffffff

Not masked

1 #a9a9a9

Cloud shadow, adjacent to cloud/cloud shadow, or both

2 #f2f2f2

Snow/ice

3 #d3d3d3

Snow/ice and class 1 (cloud shadow or adjacent to cloud/cloud shadow)

4 #dfdfdf

Cloud

5 #c0c0c0

Cloud and class 1 (cloud shadow or adjacent to cloud/cloud shadow)

6 #b0b0b0

Cloud and snow/ice

7 #a0a0a0

Cloud, snow/ice, and class 1 (cloud shadow or adjacent to cloud/cloud shadow)

8 #0000ff

Fmask identified water

9 #87cefa

Fmask identified water, cloud shadow or adjacent to cloud/cloud shadow'

10 #add8e6

Fmask identified water, snow/ice

11 #b0e0e6

Fmask identified water, snow/ice and class 1 (cloud shadow or adjacent to cloud/cloud shadow)

12 #6495ed

Fmask identified water, cloud

13 #4682b4

Fmask identified water, cloud and class 1 (cloud shadow or adjacent to cloud/cloud shadow)

14 #4169e1

Fmask identified water, cloud and snow/ice

15 #1e90ff

Fmask identified water, cloud, snow/ice, and class 1 (cloud shadow or adjacent to cloud/cloud shadow)

Image Properties

Image Properties

Name Type Description
AEROSOL_CLASS_REMAPPING_ENABLED STRING

Indicates if the aerosol class remapping is enabled (TRUE) or disabled (FALSE).

CLOUD_COVERAGE DOUBLE

The percentage of pixels with observational data (as opposed to fill value and ocean masked) that HLS QA mask marks as cloud, cloud shadow, or adjacent-to-cloud.

INPUT_HLS_PRODUCT_CLOUD_COVERAGE DOUBLE

The percentage of the tile area with observational data (as opposed to fill value) in the input HLS product.

NBAR_SOLAR_ZENITH DOUBLE

The solar zenith angle used in Nadir Bidirectional Reflectance Distribution Function Adjusted Reflectance (NBAR) derivation.

PROCESSING_DATETIME STRING

DSWx-HLS product processing date. Format: YYYY-MM-DDTHH:MM:SSZ.

PRODUCT_VERSION STRING

The DSWx-HLS product version (same as in the product filename). It increments with changes to the structure and/or metadata contained within the product.

SENSOR STRING

Name of the sensor instrument (e.g., "OLI" or "MSI")

SPACECRAFT_NAME STRING

Name of the sensor platform (e.g., "Landsat-8", "Sentinel-2A", or "Sentinel-2B")

SPATIAL_COVERAGE_EXCLUDING_MASKED_OCEAN DOUBLE

The percentage of the tile area with observational data (as opposed to fill value and ocean masked) excluding masked ocean.

Terms of Use

Terms of Use

This dataset is openly shared, without restriction, in accordance with the EOSDIS Data Use and Citation Guidance

Citations

Citations:
  • OPERA . 2023. OPERA Dynamic Surface Water Extent from Harmonized Landsat Sentinel-2 (Version 1). Ver. 1.0. PO.DAAC, CA, USA. Dataset accessed [YYYY-MM-DD] at https://doi.org/10.5067/OPDSW-PL3V1

DOIs

Explore with Earth Engine

Code Editor (JavaScript)

Map.setCenter(-93, 30, 12);
var dswx_hls_collection = ee.ImageCollection('OPERA/DSWX/L3_V1/HLS')
                 .filterDate('2025-07-01', '2025-10-01');

// Mask out values >= 252 before calculating the mode we don't
// want to have clouds or snow/ice be included.
var masked_collection = dswx_hls_collection.map(function(image) {
  var wtr = image.select('WTR_Water_classification');
  return wtr.updateMask(wtr.lt(252));
});

var dswx_hls = masked_collection
  .reduce(ee.Reducer.mode())
  .rename('WTR_Water_classification');

var wtr_class_values = [
  0,    // Not water
  1,    // Open water
  2,    //Partial surface water
  252,  // Snow/ice
  253,  // Cloud/cloud shadow
  254   // Ocean masked
];

var wtr_palette = [
  'ffffff',  // Not water
  '0000ff',  // Open water
  '0088ff',  // Partial surface water
  'f2f2f2',  // Snow/ice
  'dfdfdf',  // Cloud/cloud shadow
  'da00ff',  // Ocean masked
];

// Select the water classification band and remap to make have palette vis.
var wtr_band = dswx_hls.select('WTR_Water_classification');
var to = [0, 1, 2, 3, 4, 5];
var wtr_remapped = wtr_band.remap(wtr_class_values, to);

Map.addLayer(
    wtr_remapped,
    {min: 0, max: 5, palette: wtr_palette}, 'Water Classification (Remapped)');
Open in Code Editor