Copy for LLM[View as Markdown](https://docs.planet.com/data/public-data/usgs-nasa/harmonized-landsat-sentinel/) # Harmonized Landsat Sentinel ![Header Thumbnail](/data/public-data/harmonized-landsat-sentinel/thumbnail.webp) Harmonized Landsat Sentinel is a NASA initiative to produce a Virtual Constellation of surface reflectance (SR) data from the Operational Land Imager (OLI) and Multi-Spectral Instrument (MSI) aboard the Landsat 8-9 and Sentinel-2 remote sensing satellites, respectively. The combined measurement enables global observations of the land every 2–3 days. Input products are Landsat 8-9 Collection 2 Level 1 top-of-atmosphere reflectance and Sentinel-2 L1C top-of-atmosphere reflectance, which NASA radiometrically harmonizes to the maximum extent, resamples to common 30-meter resolution, and grids using the Sentinel-2 Military Grid Reference System (MGRS) UTM grid. Because of this, the products are different from Landsat 8-9 Collection 2 Level 2 surface reflectance and Sentinel-2 L2A surface reflectance. Learn more about the data [here](https://lpdaac.usgs.gov/data/get-started-data/collection-overview/missions/harmonized-landsat-sentinel-2-hls-overview/). ### Basic Facts | Property | Info | | ------------------------ | ------------------------------------------------------------------------------------------------ | | **Spatial resolution** | 30 m | | **Sensor** | Operational Land Imager for Landsat 8-9, and MultiSpectral Instrument for Sentinel-2 satellites. | | **Revisit time** | 2-3 days | | **Spatial coverage** | Whole globe | | **Data availability** | Landsat 8-9 since April 2013, Sentinel-2 since November 2015. | | **Common usage/purpose** | Vegetation monitoring, land use, land cover maps and monitoring of changes. | ## Accessing Data To access data you need to send a POST request to our `process` API. The requested data will be returned as the response to your request. Each POST request can be tailored to get you exactly the data you require. To do this requires setting various parameters which depend on the collection you are querying. This chapter will help you understand the parameters for HLS data. For an overview of all API parameters see the [API Reference](https://docs.planet.com/develop/apis.md). ### Endpoint Locations | Service | Notes | | ------------------------------------- | ------------------------------------------------------------- | | services-uswest2.sentinel-hub.com/api | Landsat 8-9 since April 2013, Sentinel-2 since November 2015. | ### Data type identifier: `hls` Use `hls` as the value of the `input.data.type parameter` in your API requests. This is mandatory and will ensure you get HLS data. ### Filtering Options This chapter will explain the `input.data.dataFilter` object of the `process` API. #### `mosaickingOrder` Sets the order of overlapping tiles from which the output result is mosaicked. Note that tiles will in most cases come from the same orbit/acquisition. The tiling is done by NASA for easier distribution. | Value | Description | Notes | | --------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | | **mostRecent** | (default) The pixel will be selected from the most recently acquired tile | | | **leastRecent** | similar to **mostRecent** but in reverse order | | | **leastCC** | The pixel is selected from the tile with the lowest cloud coverage | This information is estimated per tile (each covering about 31,100 sq. km) so local cloud coverage may differ | #### `maxCloudCoverage` Sets the upper limit for cloud coverage in percent based on the precomputed cloud coverage estimate for each tile as present in the tile metadata. Satellite data will therefore not be retrieved for tiles with a higher cloud coverage estimate. For example, by setting the value to `20`, only tiles with at most 20% cloud coverage will be used. Note that this parameter is set per tile and might not be directly applicable to the chosen area of interest. #### `constellation` Selects constellation. By default, both constellations are selected. Note that for any type of data mosaicking, for requests containing bands which are present in only one constellation (e.g. `RedEdge1`), it is highly recommended (but not strictly necessary) to set the corresponding `constellation` parameter. Otherwise, your request may fail as the band is not guaranteed to be present for all data being mosaicked. | Value | Description | | ------------ | ------------------------------ | | **SENTINEL** | selects only Sentinel products | | **LANDSAT** | selects only Landsat products | ### Processing Options This chapter will explain the `input.data.processing` object of the `process` API. | Parameter | Description | | ------------ | -------------------------------------------------------------------------------------------------------------- | | upsampling | [The same as for S2L1C.](https://docs.planet.com/data/public-data/copernicus/sentinel-2.md#processing-options) | | downsampling | [The same as for S2L1C.](https://docs.planet.com/data/public-data/copernicus/sentinel-2.md#processing-options) | ### Available Bands and Data Information in this chapter is useful when defining [`input` object](https://docs.planet.com/develop/evalscripts/functions.md#input-object-properties) in evalscript. Any string listed in the column **Name** can be an element of the `input.bands` array in your evalscript. | Name | Description | Resolution | Constellation | | ---------------- | --------------------------------------------------------------------------------------------------- | ---------- | ------------- | | CoastalAerosol | Coastal Aerosol - band 1 from Landsat and Sentinel | 30 m | Both | | Blue | Blue - band 2 from both | 30 m | Both | | Green | Green - band 3 from both | 30 m | Both | | Red | Red - band 4 from both | 30 m | Both | | RedEdge1 | Red-Edge 1 - band 5 from Sentinel | 30 m | Sentinel | | RedEdge2 | Red-Edge 2 - band 6 from Sentinel | 30 m | Sentinel | | RedEdge3 | Red-Edge 3 - band 7 from Sentinel | 30 m | Sentinel | | NIR\_Broad | NIR Broad - band 8 from Sentinel | 30 m | Sentinel | | NIR\_Narrow | NIR Narrow - band 5 from Landsat and 8A from Sentinel | 30 m | Both | | SWIR1 | SWIR 1 - band 6 from Landsat and 11 from Sentinel | 30 m | Both | | SWIR2 | SWIR 2 - band 7 from Landsat and 12 from Sentinel | 30 m | Both | | WaterVapor | Water Vapor - band 9 from Sentinel | 30 m | Sentinel | | Cirrus | Cirrus - band 9 from Landsat and 10 from Sentinel | 30 m | Both | | ThermalInfrared1 | Thermal Infrared 1 - band 10 from Landsat | 30 m | Landsat | | ThermalInfrared2 | Thermal Infrared 2 - band 11 from Landsat | 30 m | Landsat | | QA | Quality Assessment band (QA) | 30 m | Both | | VAA | View (sensor) Azimuth Angle | 30 m | Both | | VZA | View (sensor) Zenith Angle | 30 m | Both | | SAA | Sun Azimuth Angle | 30 m | Both | | SZA | Sun Zenith Angle | 30 m | Both | | dataMask | The mask of data/no data pixels ([more](https://docs.planet.com/develop/evalscripts.md#data-mask)). | N/A \[1] | Both | \[1]: dataMask has no source resolution as it is calculated for each output pixel. For more info about the bands, check [HLS user guide](https://lpdaac.usgs.gov/documents/1698/HLS_User_Guide_V2.pdf). ### Units The data values for each band in your custom script are presented in the units as specified here. In case more than one unit is available for a given band, you may optionally set the value of `input.units` in your evalscript `setup` function to one of the values in the `Units Value` column. Doing so will present data in that unit. The `units` parameter combines the physical quantity and corresponding units of measurement values. As such, some names more closely resemble physical quantities, others resemble units of measurement. The `Source Format` specifies how and with what precision the digital numbers (`DN`) from which the unit is derived are encoded. Bands requested in `DN` units contain exactly the pixel values of the source data. Note that resampling may produce interpolated values. `DN` is also used whenever a band is derived computationally (like dataMask); such bands can be identified by having `DN` units and `N/A` source format. `DN` values are typically not offered if they do not simply represent any physical quantity, in particular, when `DN` values require source-specific (i.e. non-global) conversion to physical quantities. Values in non-`DN` units are computed from the source (`DN`) values with at least float32 precision. Note that the conversion might be nonlinear, therefore the full value range and quantization step size of such a band can be hard to predict. Band values in evalscripts always behave as floating point numbers, regardless of the actual precision. The `Typical Range` indicates what values are common for a given band and unit, however outliers can be expected. For optical data, the relation between `DN` and `REFLECTANCE` (default unit) is: `DN = 10000 * REFLECTANCE`. For thermal data, the relation between `DN` and `BRIGHTNESS_TEMPERATURE` (default unit) is: `DN = 100 * BRIGHTNESS_TEMPERATURE`. For angle view data, the relation between `DN` and `DEGREES` (default unit) is: `DN = 100 * DEGREES`. | Band | Physical Quantity (units) | Units Value | Source Format | Typical Range | Notes | | ---------------------- | ----------------------------------- | ---------------------------- | ------------- | ------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | | Optical bands | Surface reflectance (unitless) | REFLECTANCE | INT16 | 0 - 0.4 | Higher values in infrared bands. Reflectance values can easily be above 1. | | Optical bands | Digital numbers (unitless) | DN | INT16 | 0 - 4000 | | | Thermal infrared bands | Brightness temperature (kelvin) | BRIGHTNESS\_TEMPERATURE \[1] | INT16 | 250 - 320 | Brightness temperature of roughly -20 to +50 C. Can reach outside this range in extreme environments. | | Thermal infrared bands | Digital numbers (unitless) | DN | INT16 | 25000-32000 | Brightness temperature of roughly -20 to +50 C. Can reach outside this range in extreme environments. | | QA | Pixel quality assessment (unitless) | DN | UINT8 | bit-packed combination | For the interpretation, check chapter 6.4 of the [user guide](https://lpdaac.usgs.gov/documents/1698/HLS_User_Guide_V2.pdf). | | View angles | Angle (degrees) | DEGREES | UINT16 | | | | View angles | Digital numbers (unitless) | DN | UINT16 | | | | dataMask | N/A | DN | N/A | 0 - no data
1 - data | | \[1]: Top of the Atmosphere Brightness Temperature. ### Scenes Object [`scenes` object](https://docs.planet.com/develop/evalscripts/functions.md#scenes) stores metadata. An example of metadata available in `scenes` object for HLS when mosaicking is `ORBIT`: | Property name | Value | | ----------------------- | -------------------------------------------------------------------------------------------- | | dateFrom | `'2018-12-25T00:00:00Z'` | | dateTo | `'2018-12-25T23:59:59Z'` | | tiles\[i].hlsProductId | `'HLSS30.020/HLS.S30.T58WEV.2020273T003609.v2.0`' | | tiles\[i].date | `'2018-12-25T09:45:29.121783Z'` | | tiles\[i].shId | `3097841` | | tiles\[i].cloudCoverage | `98.35` | | tiles\[i].dataPath | `'https://lp-prod-protected.s3.amazonaws.com/HLSS30.020/HLS.S30.T58WEV.2020273T003609.v2.0'` | Properties of a `scenes` object can differ depending on the selected mosaicking and in which evalscript function the object is accessed. [Working with metadata in evalscript](https://docs.planet.com/develop/evalscripts.md#working-with-metadata-in-evalscripts) user guide explains all details and provide examples. ## Catalog API Capabilities To access HLS product metadata you need to send search request to our [Catalog API](https://docs.planet.com/develop/apis/catalog/reference.md). The requested metadata will be returned as JSON formatted response to your request. ### Collection identifier: `hls` ### Filter extension * `eo:cloud_cover` cloud cover percentage * `constellation` ([possible values](#constellation)) ### Distinct extension * `date`