Skip to content

Commit

Permalink
**ENH: Adding the support of Harmonized Landsat-Sentinel constellatio…
Browse files Browse the repository at this point in the history
…n** sertit#49
  • Loading branch information
remi-braun committed Nov 29, 2022
1 parent 9b05a11 commit ce1b7f2
Show file tree
Hide file tree
Showing 10 changed files with 1,109 additions and 38 deletions.
6 changes: 5 additions & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,15 @@
- `RDI` (or `DSI`) uses now `SWIR_1` instead of `SWIR_2` (see [this](https://github.com/awesome-spectral-indices/awesome-spectral-indices/issues/18) issue)
- `PANI` equivalent is now `BITM` and is normalised ! (/3.)
- `SBI` is normalized (/2.) to fit with `BIXS` definition
- **BREAKING CHANGES: Using `pyresample` to geocode Sentinel-3 data** ([#55](https://github.com/sertit/eoreader/issues/55))
- **BREAKING CHANGES: Using `pyresample` to geocode Sentinel-3 data** ([#55](https://github.com/sertit/eoreader/issues/55))
- Cleaner: better conversion from swath to grid
- Faster: Up to 4 times faster
- Allows code refactoring between OLCI and SLSTR

### Enhancements

- **ENH: Adding the support of Harmonized Landsat-Sentinel constellation** ([#49](https://github.com/sertit/eoreader/issues/49))
-
### Bug Fixes

- FIX: Fixing `CustomProduct` initialization when fields are set to None (instead of not declaring them)
Expand Down
7 changes: 7 additions & 0 deletions CI/SCRIPTS/test_satellites.py
Original file line number Diff line number Diff line change
Expand Up @@ -588,6 +588,13 @@ def test_l1_mss():
_test_core_optical("*LM01*")


@s3_env
@dask_env
def test_hls():
"""Function testing the support of HLS constellation"""
_test_core_optical("*HLS*")


@s3_env
@dask_env
def test_pla():
Expand Down
6 changes: 6 additions & 0 deletions CI/SCRIPTS_SNAP/test_all_sat_end_to_end_on_disk.py
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,12 @@ def test_l1_mss():
_test_core_optical("*LM01*")


@dask_env
def test_hls():
"""Function testing the support of HLS constellation"""
_test_core_optical("*HLS*")


@dask_env
def test_pla():
"""Function testing the support of PlanetScope constellation"""
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
and [SAR](https://eoreader.readthedocs.io/en/latest/sar.html) constellations, loading and stacking bands,
clouds, DEM and spectral indices in a sensor-agnostic way.

| **Optical** | **SAR** |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `Sentinel-2` and `Sentinel-2 Theia`<br>`Sentinel-3 OLCI` and `SLSTR`<br>`Landsat` 1 to 9<br>`PlanetScope`, `SkySat` and `RapidEye`<br>`Pleiades` and `Pleiades-Neo`<br>`SPOT-6/7`<br>`SPOT-4/5`<br>`Vision-1`<br>`Maxar` (WorldViews, GeoEye)<br>`SuperView-1` | `Sentinel-1`<br>`COSMO-Skymed` 1st and 2nd Generation<br>`TerraSAR-X`, `TanDEM-X` and `PAZ SAR`<br>`RADARSAT-2` and `RADARSAT-Constellation`<br>`ICEYE`<br>`SAOCOM` |
| **Optical** | **SAR** |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `Sentinel-2` and `Sentinel-2 Theia`<br>`Sentinel-3 OLCI` and `SLSTR`<br>`Landsat` 1 to 9<br>`Harmonized Landsat-Sentinel`<br>`PlanetScope`, `SkySat` and `RapidEye`<br>`Pleiades` and `Pleiades-Neo`<br>`SPOT-6/7`<br>`SPOT-4/5`<br>`Vision-1`<br>`Maxar` (WorldViews, GeoEye)<br>`SuperView-1` | `Sentinel-1`<br>`COSMO-Skymed` 1st and 2nd Generation<br>`TerraSAR-X`, `TanDEM-X` and `PAZ SAR`<br>`RADARSAT-2` and `RADARSAT-Constellation`<br>`ICEYE`<br>`SAOCOM` |

It also implements additional **sensor-agnostic** features:

Expand Down
67 changes: 39 additions & 28 deletions docs/optical.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,34 +6,35 @@ The product resolution is the one given in [Data Access Portfolio (2014-2022, se
The Data Access Portfolio Document presents the offer of the datasets and data access services that are made available to the Copernicus Users in response to their Earth Observation data requirements.

``` {container} full-width
| Constellations | Class | Product Types | Default Resolution | Use archive |
|--------------------|---------------------------------------------------------|---------------------------|--------------------------------------|-------------------|
| Sentinel-2 | {meth}`~eoreader.products.optical.s2_product.S2Product` | L1C & L2A & L2Ap | 10m | ✅ |
| Sentinel-2 Theia | {meth}`~eoreader.products.S2TheiaProduct` | L2A | 10m | ✅ |
| Sentinel-3 SLSTR | {meth}`~eoreader.products.S3Product` | RBT | 300m | ✅ |
| Sentinel-3 OLCI | {meth}`~eoreader.products.S3Product` | EFR | 500m | ✅ |
| Landsat 9 OLI-TIRS | {meth}`~eoreader.products.L9Product` | Level 1 & 2 | 30m | ✅ |
| Landsat 8 OLI-TIRS | {meth}`~eoreader.products.L8Product` | Level 1 & 2 | 30m | COL1*: ❌, COL2: ✅ |
| Landsat 7 ETM | {meth}`~eoreader.products.L7Product` | Level 1 & 2 | 30m | COL1*: ❌, COL2: ✅ |
| Landsat 5 TM | {meth}`~eoreader.products.L5Product` | Level 1 & 2 | 30m | COL1*: ❌, COL2: ✅ |
| Landsat 4 TM | {meth}`~eoreader.products.L4Product` | Level 1 & 2 | 30m | COL1*: ❌, COL2: ✅ |
| Landsat 5 MSS | {meth}`~eoreader.products.L5Product` | Level 1 | 60m | COL1*: ❌, COL2: ✅ |
| Landsat 4 MSS | {meth}`~eoreader.products.L4Product` | Level 1 | 60m | COL1*: ❌, COL2: ✅ |
| Landsat 3 MSS | {meth}`~eoreader.products.L3Product` | Level 1 | 60m | COL1*: ❌, COL2: ✅ |
| Landsat 2 MSS | {meth}`~eoreader.products.L2Product` | Level 1 | 60m | COL1*: ❌, COL2: ✅ |
| Landsat 1 MSS | {meth}`~eoreader.products.L1Product` | Level 1 | 60m | COL1*: ❌, COL2: ✅ |
| PlanetScope | {meth}`~eoreader.products.PlaProduct` | L3A & L3B | 3m | ✅(❌ if multiple subdatasets) |
| SkySat | {meth}`~eoreader.products.SkyProduct` | (Collect Product) ortho_* | 0.5m | ✅(❌ if multiple subdatasets) |
| RapidEye | {meth}`~eoreader.products.ReProduct` | L3A | 5m | ✅(❌ if multiple subdatasets) |
| Pleiades-Neo | {meth}`~eoreader.products.PneoProduct` | SEN**, PRJ, ORT & MOS | 0.3 (PAN), 1.2m (MS) | ✅ |
| Pleiades | {meth}`~eoreader.products.PldProduct` | SEN**, PRJ, ORT & MOS | 0.5 (PAN), 2m (MS) | ✅ |
| Vision-1 | {meth}`~eoreader.products.Vis1Product` | PRJ & ORTP | 0.9 (PAN), 3.5m (MS) | ✅ |
| SPOT 4 | {meth}`~eoreader.products.Spot45Product` | L1A, L1B, L2A | 10 (PAN), 20m (MS) | ✅ |
| SPOT 5 | {meth}`~eoreader.products.Spot45Product` | L1A, L1B, L2A | 2.5 (SuperMode), 5.0 (PAN), 10m (MS) | ✅ |
| SPOT 7 | {meth}`~eoreader.products.Spot7Product` | SEN**, PRJ, ORT & MOS | 1.5 (PAN), 6m (MS) | ✅ |
| SPOT 6 | {meth}`~eoreader.products.Spot6Product` | SEN**, PRJ, ORT & MOS | 1.5 (PAN), 6m (MS) | ✅ |
| Maxar*** | {meth}`~eoreader.products.MaxarProduct` | Standard & Ortho | 0.5 (PAN), 2m (MS) | ✅ |
| SuperView-1 | {meth}`~eoreader.products.Sv1Product` | L1B & L2A | 0.5 (PAN), 2m (MS) | ✅ |
| Constellations | Class | Product Types | Default Resolution | Use archive |
|------------------------------|---------------------------------------------------------|---------------------------|--------------------------------------|------------------------------|
| Sentinel-2 | {meth}`~eoreader.products.optical.s2_product.S2Product` | L1C & L2A & L2Ap | 10m | ✅ |
| Sentinel-2 Theia | {meth}`~eoreader.products.S2TheiaProduct` | L2A | 10m | ✅ |
| Sentinel-3 SLSTR | {meth}`~eoreader.products.S3Product` | RBT | 300m | ✅ |
| Sentinel-3 OLCI | {meth}`~eoreader.products.S3Product` | EFR | 500m | ✅ |
| Landsat 9 OLI-TIRS | {meth}`~eoreader.products.L9Product` | Level 1 & 2 | 30m | ✅ |
| Landsat 8 OLI-TIRS | {meth}`~eoreader.products.L8Product` | Level 1 & 2 | 30m | COL1*: ❌, COL2: ✅ |
| Landsat 7 ETM | {meth}`~eoreader.products.L7Product` | Level 1 & 2 | 30m | COL1*: ❌, COL2: ✅ |
| Landsat 5 TM | {meth}`~eoreader.products.L5Product` | Level 1 & 2 | 30m | COL1*: ❌, COL2: ✅ |
| Landsat 4 TM | {meth}`~eoreader.products.L4Product` | Level 1 & 2 | 30m | COL1*: ❌, COL2: ✅ |
| Landsat 5 MSS | {meth}`~eoreader.products.L5Product` | Level 1 | 60m | COL1*: ❌, COL2: ✅ |
| Landsat 4 MSS | {meth}`~eoreader.products.L4Product` | Level 1 | 60m | COL1*: ❌, COL2: ✅ |
| Landsat 3 MSS | {meth}`~eoreader.products.L3Product` | Level 1 | 60m | COL1*: ❌, COL2: ✅ |
| Landsat 2 MSS | {meth}`~eoreader.products.L2Product` | Level 1 | 60m | COL1*: ❌, COL2: ✅ |
| Landsat 1 MSS | {meth}`~eoreader.products.L1Product` | Level 1 | 60m | COL1*: ❌, COL2: ✅ |
| Harmonized Landsat-Sentinel | {meth}`~eoreader.products.HlsProduct` | L30 & S30 | 30m | ✅ |
| PlanetScope | {meth}`~eoreader.products.PlaProduct` | L3A & L3B | 3m | ✅(❌ if multiple subdatasets) |
| SkySat | {meth}`~eoreader.products.SkyProduct` | (Collect Product) ortho_* | 0.5m | ✅(❌ if multiple subdatasets) |
| RapidEye | {meth}`~eoreader.products.ReProduct` | L3A | 5m | ✅(❌ if multiple subdatasets) |
| Pleiades-Neo | {meth}`~eoreader.products.PneoProduct` | SEN**, PRJ, ORT & MOS | 0.3 (PAN), 1.2m (MS) | ✅ |
| Pleiades | {meth}`~eoreader.products.PldProduct` | SEN**, PRJ, ORT & MOS | 0.5 (PAN), 2m (MS) | ✅ |
| Vision-1 | {meth}`~eoreader.products.Vis1Product` | PRJ & ORTP | 0.9 (PAN), 3.5m (MS) | ✅ |
| SPOT 4 | {meth}`~eoreader.products.Spot45Product` | L1A, L1B, L2A | 10 (PAN), 20m (MS) | ✅ |
| SPOT 5 | {meth}`~eoreader.products.Spot45Product` | L1A, L1B, L2A | 2.5 (SuperMode), 5.0 (PAN), 10m (MS) | ✅ |
| SPOT 7 | {meth}`~eoreader.products.Spot7Product` | SEN**, PRJ, ORT & MOS | 1.5 (PAN), 6m (MS) | ✅ |
| SPOT 6 | {meth}`~eoreader.products.Spot6Product` | SEN**, PRJ, ORT & MOS | 1.5 (PAN), 6m (MS) | ✅ |
| Maxar*** | {meth}`~eoreader.products.MaxarProduct` | Standard & Ortho | 0.5 (PAN), 2m (MS) | ✅ |
| SuperView-1 | {meth}`~eoreader.products.Sv1Product` | L1B & L2A | 0.5 (PAN), 2m (MS) | ✅ |
```
\* *Archived Landsat Collection-1 are not managed because of the tar.gz format, which is too slow to process. It is better to work on the extracted product. Landsat-9 Collection-1 products don't exist.*

Expand All @@ -45,6 +46,12 @@ The Data Access Portfolio Document presents the offer of the datasets and data a
Satellites products that cannot be used as archived have to be extracted before use.
```

```{note}
Note that for the rest of this documentation:
- HLS.S30 and Sentinel-2 data are equivalent (only 30m gsd).
- HLS.L30 and Landsat-OLI-TIRS data are equivalent.
```

The goal of **EOReader** is to implement every constellation that can be used in the [Copernicus Emergency Management Service](https://emergency.copernicus.eu/).
The constellations that can be used during CEMS activations are (as of 09/2021):
![cems_constellations](https://www.esa.int/var/esa/storage/images/esa_multimedia/images/2021/09/copernicus_contributing_missions_overview/23461131-1-eng-GB/Copernicus_Contributing_Missions_overview_pillars.jpg)
Expand Down Expand Up @@ -139,6 +146,7 @@ But the bands that are not present in the `alias` file won't be recognized.
```
\* *Not all bands of these constellations are mapped in EOReader. However, they can still be used by using directly their name (i.e. `F1` or `Oa05`)*


```` {container} full-width
```{raw} html
:file: _static/optical_band_mapping_inline.html
Expand Down Expand Up @@ -269,6 +277,9 @@ WorldView-1 is not concerned by spectral indices as it only has a panchromatic b
- [Product Specification (Processing Baseline < 4.0)](https://sentinel.esa.int/documents/247904/349490/S2_MSI_Product_Specification.pdf)
- [Product Specification (Processing Baseline > 4.0)](https://sentinels.copernicus.eu/documents/247904/685211/Sentinel-2-Products-Specification-Document-14_8.pdf)

### Harmonize Landsat-Sentinel
- [Product Guide v2.0](https://lpdaac.usgs.gov/documents/1326/HLS_User_Guide_V2.pdf)

### Sentinel-2 Theia

- [Product Format](https://labo.obs-mip.fr/multitemp/sentinel-2/theias-sentinel-2-l2a-product-format/)
Expand Down
Loading

0 comments on commit ce1b7f2

Please sign in to comment.