WMS request of LANDSAT 8 level 2

Hello,

I’m interested to use Landsat 8 images level 2 (surface reflectance).
The problem is that it seems like this data collection is not available in WMS:

for collection in DataCollection.get_available_collections():
    print(collection)
...
DataCollection.LANDSAT8

When I print information about this data collection seems like only level 1 is available :

DataCollection.LANDSAT8

>>> <DataCollection.LANDSAT8: DataCollectionDefinition( 
api_id: L8L1C 
catalog_id: landsat-8-l1c 
wfs_id: DSS6 
service_url: [https://services-uswest2.sentinel-hub.com](https://services-uswest2.sentinel-hub.com/) 
collection_type: Landsat 8 
processing_level: L1C bands: ('B01', 'B02', 'B03', 'B04', 'B05', 'B06', 'B07', 'B08', 'B09', 'B10', 'B11') 
is_timeless: False 
has_cloud_coverage: True )>

In additon to that, when I try to create new Landsat 8 level 2 layer, it seems like not all the bands are available:
image

How can I access this data collection?

Best regards :slight_smile:
Reut

Hi @reutkeller,

let me try to answer all your questions.

  • landsat-8-l1c is an old, now deprecated, Landsat Collection 1, which will cease to exist end of June, see forum post.
  • for Collection 2 you should use landsat-ot-l1 and landsat-ot-l2
  • WFS ids are DSS12 for Level 1 and DSS13 for Level 2 (see info)
  • It might be that sentinelhub-py is not yet supporting this collection, but it should be straightforward to add it on your side (pull requests are welcome as well!)
  • the “Base products” In configuration utility are just the most commonly used composites. You can easily configure a new composite by following these instructions. You will find a list of available bands here.

So… Landsat 8 Collection 2 is for sure supported by WMS.

1 Like

The DataCollection for Landsat Collection are not yet (pre)defined in sh-py, but following the rules in example it is possible to do it yourself.

The code for LandSat8, Level1 product from Collection 2 is thus:

landsat8_l1 = DataCollection.define(
    name = 'L8_C2_L1',
    api_id = 'LOTL1',
    catalog_id = 'landsat-ot-l1',
    wfs_id = 'DSS12',
    service_url = ServiceUrl.USWEST,
    collection_type = 'Landsat Collection 2',
    processing_level = 'L1',
    bands = ('B01', 'B02', 'B03', 'B04', 'B05', 'B06', 'B07', 'B08', 'B09', 'B10', 'B11', 'BQA'), 
    has_cloud_coverage = True
)
2 Likes

Hi @batic, I get the name error from your script:

NameError: name ‘ServiceUrl’ is not defined

The ServiceUrl enum is defined in data_collections.py, so you need to import it first:

from sentinelhub.data_collections import ServiceUrl
ServiceUrl.USWEST
> 'https://services-uswest2.sentinel-hub.com'

The other possibility is to add url to the landsat8_l1 definition as

...
service_url = 'https://services-uswest2.sentinel-hub.com',
...
1 Like

@batic Thank you!
is there option to do the same for the level 2 data? Where can I get the parameters values to acess similarly the level 2 images?

Thank you very much :slight_smile:

New version of sentinelhub-py was released yesterday, and these collections are now predefined.

Best of luck,
Matej

Thank you for your answer,
I experience unexcpected behavior, when I pront the available data collection it doesn’t show all the time the level two data:

for collection in DataCollection.get_available_collections():
    print(collection)

DataCollection.SENTINEL2_L1C
DataCollection.SENTINEL2_L2A
DataCollection.SENTINEL1
DataCollection.SENTINEL1_IW
DataCollection.SENTINEL1_IW_ASC
DataCollection.SENTINEL1_IW_DES
DataCollection.SENTINEL1_EW
DataCollection.SENTINEL1_EW_ASC
DataCollection.SENTINEL1_EW_DES
DataCollection.SENTINEL1_EW_SH
DataCollection.SENTINEL1_EW_SH_ASC
DataCollection.SENTINEL1_EW_SH_DES
DataCollection.DEM
DataCollection.DEM_MAPZEN
DataCollection.DEM_COPERNICUS_30
DataCollection.DEM_COPERNICUS_90
DataCollection.MODIS
DataCollection.LANDSAT8
DataCollection.SENTINEL5P
DataCollection.SENTINEL3_OLCI
DataCollection.SENTINEL3_SLSTR

I suggest checking if you are using the correct version of the package. You can do that in the code with:

import sentinelhub

print(sentinelhub.__version__)

The new version is 3.3.1.

2 Likes