Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

api.search() not returning level 2 products #89

Open
jeremy-cesbio opened this issue Dec 5, 2022 · 4 comments
Open

api.search() not returning level 2 products #89

jeremy-cesbio opened this issue Dec 5, 2022 · 4 comments

Comments

@jeremy-cesbio
Copy link

This package is very simple and intuitive to use, thank you !

I have an issue that probably has a simple answer that I can't find: the search function only returns level 1 products for landsat 7, 8 and landsat 9 Collection 2. Here is an example of my script :

from landsatxplore.api import API
import geopandas as gpd

shapefile = '/home/my_shapefile.shp'

gpd_shape = gpd.read_file(shapefile)
gpd_shape = gpd_shape.to_crs(epsg='4326')  # Force WGS84 projection
bounds = gpd_shape.geometry.total_bounds

# Initialize a new API instance and get an access key
api = API('my_id', 'my_pass')

# Search for Landsat TM scenes
scenes = api.search(
    dataset='landsat_ot_c2_l2',
    bbox=list(bounds),
    start_date='2020-01-01',
    end_date='2020-10-01',
    max_cloud_cover=80
)

print(f"{len(scenes)} scenes found.")

for scene in scenes:
    print(scene['acquisition_date'])
    print(scene['landsat_product_id'])

And here is the return (identical to the return where dataset='landsat_ot_c2_l1'):

26 scenes found.
2020-09-17 00:00:00
LC08_L1TP_198031_20200917_20201005_02_T1
2020-09-08 00:00:00
LC08_L1TP_199031_20200908_20200919_02_T1
2020-09-01 00:00:00
LC08_L1TP_198031_20200901_20200906_02_T1
2020-08-23 00:00:00
LC08_L1TP_199031_20200823_20200905_02_T1
2020-08-16 00:00:00
LC08_L1TP_198031_20200816_20200920_02_T1
2020-08-07 00:00:00
LC08_L1TP_199031_20200807_20200916_02_T1
2020-07-31 00:00:00
LC08_L1TP_198031_20200731_20200908_02_T1
2020-07-22 00:00:00
LC08_L1TP_199031_20200722_20200911_02_T1
2020-07-15 00:00:00
LC08_L1TP_198031_20200715_20200912_02_T1
2020-07-06 00:00:00
LC08_L1TP_199031_20200706_20200913_02_T1
2020-06-29 00:00:00
LC08_L1TP_198031_20200629_20200823_02_T1
2020-06-20 00:00:00
LC08_L1TP_199031_20200620_20200823_02_T1
...
2020-01-12 00:00:00
LC08_L1TP_199031_20200112_20200824_02_T1
2020-01-05 00:00:00
LC08_L1TP_198031_20200105_20200823_02_T1

The dates and tiles are correct but I'm looking for the LC08_L2SP_... products.

Thanks in advance

@hiewliwen
Copy link

Change the dataset ID to the L2 according to the table.

# Search for Landsat TM scenes
scenes = api.search(
    dataset='landsat_ot_c2_l2', <-- CHANGE THIS
Dataset Name Dataset ID
Landsat 5 TM Collection 1 Level 1 landsat_tm_c1
Landsat 5 TM Collection 2 Level 1 landsat_tm_c2_l1
Landsat 5 TM Collection 2 Level 2 landsat_tm_c2_l2
Landsat 7 ETM+ Collection 1 Level 1 landsat_etm_c1
Landsat 7 ETM+ Collection 2 Level 1 landsat_etm_c2_l1
Landsat 7 ETM+ Collection 2 Level 2 landsat_etm_c2_l2
Landsat 8 Collection 1 Level 1 landsat_8_c1
Landsat 8 Collection 2 Level 1 landsat_ot_c2_l1
Landsat 8 Collection 2 Level 2 landsat_ot_c2_l2
Sentinel 2A sentinel_2a

@jeremy-cesbio
Copy link
Author

But I precisely want the Landsat 8 Collection 2 Level 2 products (i.e. landsat_ot_c2_l2), but the search function returns the Level 1 products...

@envaidya
Copy link

envaidya commented Feb 6, 2024

This looks like an old thread, but is there any solution to this? I am facing same issue. With "scenes = api.search(
dataset='landsat_ot_c2_l2'", the files downloaded are all Level 1 (L1) only! How can I only download L2 data? Thanks.

@jeremy-cesbio
Copy link
Author

I ended up adapting the script from this link to my usage (USGS Machine-to-Machine (M2M) API), didn't take too much time.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants