Download satellite data using s3 on CopPhil
The following example aims to present how to use s3 protocol in order to get data directly from object storage. It is divided into three main parts:
Data discovery - How to use query to get data from object storage
Download full Sentinel-2 product
Download selected Sentinel-2 bands from object storage
Prerequisites
No. 1 Access to CopPhil site
You need a CopPhil hosting account, available at https://infra.copphil.philsa.gov.ph.
No. 2 Access to JupyterLab
JupyterLab used in this article is available here: https://jupyter.infra.copphil.philsa.gov.ph/hub/login?next=%2Fhub%2F.
No. 3 Working knowledge of JupyterLab
See Download satellite data using API on CopPhil
No. 4 Using API
This is an introductory example of obtaining EODATA using API calls, in Python:
Download satellite data using API on CopPhil
No. 5 Information on Sentinel-2 mission
Page Sentinel-2 mission shows basic information on Sentinel-2 mission, which is used in this article as a source of information.
No. 6 Use Geo science kernel
Geo science kernel has preinstalled all of the Python libraries in this article:
Python 3 kernel and Geo science kernel in JupyterLab on CopPhil
No. 7 Have credentials to access EODATA ready To obtain the necessary credentials to access EODATA, follow this article:
How to get credentials to access EODATA on CopPhil
You can generate up to 200 different keys per account.
What We Are Going To Cover
Preparing your environment
Connecting with s3 storage - eodata
Search for the Sentinel-2 L2A products
Building a query
Extracting s3 path - urls to specific products and bands
Downloading full Sentinel-2 Level 2 product
Downloading individual bands from selected Sentinel-2 Level 2 product
Access individual bands without downloading
Download individual bands from all found Sentinel-2 Level 2 products
Access individual bands without downloading (multiple files)
Summary
Prepare your environment
Upload necessary python libraries.
# HTTP requests
import requests
# Interact with s3
import boto3
# JSON parser
import json
# file manipulation
import os
import glob
Connect with s3 storage - eodata
To access eodata, you must have a pair of credentials: access kay and secret key. These credentials are required to communicate with and use eodata storage. Use Prerequisite No. 7 to obtain these keys and enter them into the code.
If connection is successful, the following message will be printed.
Connection to bucket ’eodata’ successful. Objects found.
Here is the code:
access_key = 'your_access_key'
secret_key = 'your_secret_key'
host = 'http://eodata.infra.copphil.philsa.gov.ph'
# Initialize S3 resource
s3 = boto3.resource(
's3',
aws_access_key_id=access_key,
aws_secret_access_key=secret_key,
endpoint_url=host,
)
# Verify connection by accessing the 'eodata' bucket
bucket_name = 'eodata'
try:
bucket = s3.Bucket(bucket_name)
# Check if the bucket is accessible by listing its contents
objects = list(bucket.objects.limit(1)) # Limit to 1 object for testing
if objects:
print(f"Connection to bucket '{bucket_name}' successful. Objects found.")
else:
print(f"Connection to bucket '{bucket_name}' successful, but no objects found.")
except Exception as e:
print(f"Connection to bucket '{bucket_name}' failed:", e)
The output:
Connection to bucket 'eodata' successful. Objects found.
Search for the Sentinel-2 L2A products
Build a query
In order to find desired products it is needed to determinate some specific filters:
- collection_name:
Sentinel-1, Sentinel-2 etc.
- product_type
MSIL1C, MSIL2A
- aoi
Extent (coordinates) of the area of interest (WGS84)
- search_period_start
Time range - start date
- search_period_end
Time range - end date - max_cloud_cover: maximum cloud cover (%) of the image
# base URL of the product catalogue
catalogue_odata_url = "https://catalogue.infra.copphil.philsa.gov.ph/odata/v1"
# search parameters
collection_name = "SENTINEL-2"
product_type = "S2MSI2A"
aoi = "POLYGON((120.962986 14.598416, 120.995964 14.599182, 120.999658 14.563436, 120.960348 14.567522, 120.962986 14.598416))"
search_period_start = "2024-01-01T00:00:00.000Z"
search_period_end = "2024-09-30T00:00:00.000Z"
max_cloud_cover = 20
search_query = f"{catalogue_odata_url}/Products?$filter=Collection/Name eq '{collection_name}' and Attributes/OData.CSC.StringAttribute/any(att:att/Name eq 'productType' and att/OData.CSC.StringAttribute/Value eq '{product_type}' and Attributes/OData.CSC.DoubleAttribute/any(att:att/Name eq 'cloudCover' and att/OData.CSC.DoubleAttribute/Value le {max_cloud_cover})) and OData.CSC.Intersects(area=geography'SRID=4326;{aoi}') and ContentDate/Start gt {search_period_start} and ContentDate/Start lt {search_period_end}"
#search_query_cloud = f"{search_query} and Attributes/OData.CSC.DoubleAttribute/any(att:att/Name eq 'cloudCover' and att/OData.CSC.DoubleAttribute/Value le {max_cloud_cover})"
print(f"""\n{search_query.replace(' ', "%20")}\n""")
The output:
Extract s3 path - urls to specific products and bands
Make a request using created query and parse it to extract s3 paths. s3 paths are some kind of urls/localization where files are stored. However, they do not represent physical file paths as they would on a traditional file system; rather, they serve as identifiers within s3’s flat object storage.
‘eodata’ part is removed from the path as it is a name of previous defined bucket.
products = requests.get(search_query).json()
path_list = []
for item in products['value']:
path_s3 = item['S3Path'].replace('/eodata/', '', 1)
path_list.append(path_s3) #append each S3Path (path) to the list
print(path_s3) #print each S3Path (path) to the list
Sentinel-2/MSI/L2A/2024/04/16/S2A_MSIL2A_20240416T021611_N0510_R003_T51PTS_20240416T075854.SAFE
Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE
Sentinel-2/MSI/L2A/2024/03/02/S2B_MSIL2A_20240302T021609_N0510_R003_T51PTS_20240302T043128.SAFE
Sentinel-2/MSI/L2A/2024/04/21/S2B_MSIL2A_20240421T021529_N0510_R003_T51PTS_20240421T043611.SAFE
Sentinel-2/MSI/L2A/2024/02/11/S2B_MSIL2A_20240211T021829_N0510_R003_T51PTS_20240211T050012.SAFE
Sentinel-2/MSI/L2A/2024/03/07/S2A_MSIL2A_20240307T021541_N0510_R003_T51PTS_20240307T053851.SAFE
Download full Sentinel-2 Level 2 product
Creates a download directory based on the name of a specific product from the path_list, then iterates through all objects in an S3 bucket that match the specified product path, downloading each file to the designated local directory while preserving the original directory structure.
# Get a name
product_path = f'{path_list[1]}/'
product_name = product_path.split('/')[-2]
# Specify the download directory
download_dir = f"./{product_name}"
# Make sure the download directory exists
os.makedirs(download_dir, exist_ok=True)
# Download each file from selected product
for obj in bucket.objects.filter(Prefix=product_path):
target_path = os.path.join(download_dir, obj.key[len(product_path):])
os.makedirs(os.path.dirname(target_path), exist_ok=True)
print(f"Downloading {obj.key} to {target_path}")
bucket.download_file(obj.key, target_path)
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/DATASTRIP/DS_2APS_20240426T075954_S20240426T022416/MTD_DS.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/DATASTRIP/DS_2APS_20240426T075954_S20240426T022416/MTD_DS.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/DATASTRIP/DS_2APS_20240426T075954_S20240426T022416/QI_DATA/FORMAT_CORRECTNESS.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/DATASTRIP/DS_2APS_20240426T075954_S20240426T022416/QI_DATA/FORMAT_CORRECTNESS.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/DATASTRIP/DS_2APS_20240426T075954_S20240426T022416/QI_DATA/GENERAL_QUALITY.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/DATASTRIP/DS_2APS_20240426T075954_S20240426T022416/QI_DATA/GENERAL_QUALITY.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/DATASTRIP/DS_2APS_20240426T075954_S20240426T022416/QI_DATA/GEOMETRIC_QUALITY.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/DATASTRIP/DS_2APS_20240426T075954_S20240426T022416/QI_DATA/GEOMETRIC_QUALITY.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/DATASTRIP/DS_2APS_20240426T075954_S20240426T022416/QI_DATA/RADIOMETRIC_QUALITY.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/DATASTRIP/DS_2APS_20240426T075954_S20240426T022416/QI_DATA/RADIOMETRIC_QUALITY.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/DATASTRIP/DS_2APS_20240426T075954_S20240426T022416/QI_DATA/SENSOR_QUALITY.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/DATASTRIP/DS_2APS_20240426T075954_S20240426T022416/QI_DATA/SENSOR_QUALITY.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/AUX_DATA/AUX_CAMSFO to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/AUX_DATA/AUX_CAMSFO
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/AUX_DATA/AUX_ECMWFT to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/AUX_DATA/AUX_ECMWFT
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_AOT_10m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_AOT_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B02_10m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B02_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B03_10m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B03_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B04_10m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B04_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B08_10m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B08_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_TCI_10m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_TCI_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_WVP_10m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_WVP_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_AOT_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_AOT_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B01_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B01_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B02_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B02_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B03_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B03_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B04_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B04_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B05_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B05_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B06_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B06_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B07_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B07_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B11_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B11_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B12_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B12_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B8A_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_B8A_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_SCL_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_SCL_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_TCI_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_TCI_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_WVP_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R20m/T51PTS_20240426T021611_WVP_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_AOT_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_AOT_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B01_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B01_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B02_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B02_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B03_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B03_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B04_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B04_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B05_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B05_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B06_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B06_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B07_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B07_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B09_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B09_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B11_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B11_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B12_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B12_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B8A_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_B8A_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_SCL_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_SCL_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_TCI_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_TCI_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_WVP_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R60m/T51PTS_20240426T021611_WVP_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/MTD_TL.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/MTD_TL.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/FORMAT_CORRECTNESS.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/FORMAT_CORRECTNESS.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/GENERAL_QUALITY.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/GENERAL_QUALITY.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/GEOMETRIC_QUALITY.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/GEOMETRIC_QUALITY.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/L2A_QUALITY.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/L2A_QUALITY.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_CLASSI_B00.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_CLASSI_B00.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_CLDPRB_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_CLDPRB_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_CLDPRB_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_CLDPRB_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B01.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B01.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B02.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B02.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B03.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B03.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B04.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B04.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B05.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B05.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B06.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B06.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B07.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B07.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B08.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B08.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B09.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B09.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B10.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B10.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B11.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B11.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B12.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B12.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B8A.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_DETFOO_B8A.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B01.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B01.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B02.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B02.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B03.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B03.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B04.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B04.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B05.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B05.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B06.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B06.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B07.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B07.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B08.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B08.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B09.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B09.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B10.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B10.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B11.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B11.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B12.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B12.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B8A.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_QUALIT_B8A.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_SNWPRB_20m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_SNWPRB_20m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_SNWPRB_60m.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/MSK_SNWPRB_60m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/SENSOR_QUALITY.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/SENSOR_QUALITY.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/T51PTS_20240426T021611_PVI.jp2 to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/QI_DATA/T51PTS_20240426T021611_PVI.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/HTML/UserProduct_index.html to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/HTML/UserProduct_index.html
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/HTML/UserProduct_index.xsl to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/HTML/UserProduct_index.xsl
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/HTML/banner_1.png to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/HTML/banner_1.png
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/HTML/banner_2.png to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/HTML/banner_2.png
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/HTML/banner_3.png to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/HTML/banner_3.png
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/HTML/star_bg.jpg to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/HTML/star_bg.jpg
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/INSPIRE.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/INSPIRE.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/MTD_MSIL2A.xml to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/MTD_MSIL2A.xml
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954-ql.jpg to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954-ql.jpg
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/manifest.safe to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/manifest.safe
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/rep_info/S2_PDI_Level-2A_Datastrip_Metadata.xsd to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/rep_info/S2_PDI_Level-2A_Datastrip_Metadata.xsd
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/rep_info/S2_PDI_Level-2A_Tile_Metadata.xsd to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/rep_info/S2_PDI_Level-2A_Tile_Metadata.xsd
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/rep_info/S2_User_Product_Level-2A_Metadata.xsd to ./S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/rep_info/S2_User_Product_Level-2A_Metadata.xsd
Download individual bands from selected Sentinel-2 Level 2 product
When you are a user granted with an access to s3, it is even better not to download full product. Access to eodata allows you to search for and download specific bands.
Download individual Sentinel-2 band files (B04 and B08 at 10m resolution) from a specific S2L2A product.
product_path = f'{path_list[1]}/'
product_name = product_path.split('/')[-2]
# Specify the download directory
download_dir = "./download"
# Make sure the download directory exists
os.makedirs(download_dir, exist_ok=True)
# Iterate over objects in the bucket with the specified prefix
for obj in bucket.objects.filter(Prefix=product_path):
# Download only B04 and B08 bands at 10m resolution
if "IMG_DATA/R10m/" in obj.key and ("_B04_10m.jp2" in obj.key or "_B08_10m.jp2" in obj.key):
# Construct the full local path
target_path = os.path.join(download_dir, obj.key[len(product_path):])
os.makedirs(os.path.dirname(target_path), exist_ok=True)
print(f"Downloading {obj.key} to {target_path}")
bucket.download_file(obj.key, target_path)
# Find red and NIR bands in all subdirectories
red_band_files = glob.glob(os.path.join(download_dir, "**", "*B04_10m.jp2"), recursive=True)
nir_band_files = glob.glob(os.path.join(download_dir, "**", "*B08_10m.jp2"), recursive=True)
if red_band_files and nir_band_files:
red_band_path = red_band_files[0]
nir_band_path = nir_band_files[0]
print(f"Red band path: {red_band_path}")
print(f"NIR band path: {nir_band_path}")
else:
print("Error: One or both of the band files (B04 and B08) were not found in the download directory.")
Downloading Sentinel-2/MSI/L2A/2024/03/07/S2A_MSIL2A_20240307T021541_N0510_R003_T51PTS_20240307T053851.SAFE/GRANULE/L2A_T51PTS_A045474_20240307T022802/IMG_DATA/R10m/T51PTS_20240307T021541_B04_10m.jp2 to ./download/GRANULE/L2A_T51PTS_A045474_20240307T022802/IMG_DATA/R10m/T51PTS_20240307T021541_B04_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/03/07/S2A_MSIL2A_20240307T021541_N0510_R003_T51PTS_20240307T053851.SAFE/GRANULE/L2A_T51PTS_A045474_20240307T022802/IMG_DATA/R10m/T51PTS_20240307T021541_B08_10m.jp2 to ./download/GRANULE/L2A_T51PTS_A045474_20240307T022802/IMG_DATA/R10m/T51PTS_20240307T021541_B08_10m.jp2
Red band path: ./download/GRANULE/L2A_T51PTS_A045474_20240307T022802/IMG_DATA/R10m/T51PTS_20240307T021541_B04_10m.jp2
NIR band path: ./download/GRANULE/L2A_T51PTS_A045474_20240307T022802/IMG_DATA/R10m/T51PTS_20240307T021541_B08_10m.jp2
Access individual bands without downloading
In fact, data does not have to be downloaded. You can just find a desired data and put it into variable. Then, it is possible to work with the data as if it was stored in your local environment.
# Set the product path and name
product_path = f'{path_list[1]}/'
product_name = product_path.split('/')[-2]
# Initialize lists to store paths of the desired band files
red_band_files = []
nir_band_files = []
# Iterate over objects in the bucket with the specified prefix
for obj in bucket.objects.filter(Prefix=product_path):
# Check for B04 and B08 bands at 10m resolution
if "IMG_DATA/R10m/" in obj.key and ("_B04_10m.jp2" in obj.key or "_B08_10m.jp2" in obj.key):
# Construct the target path (without downloading)
target_path = obj.key # Use the S3 object key directly
# Add the target path to the appropriate list
if "_B04_10m.jp2" in obj.key:
red_band_files.append(target_path)
elif "_B08_10m.jp2" in obj.key:
nir_band_files.append(target_path)
# Output the paths of the found band files
if red_band_files and nir_band_files:
red_band_path = red_band_files[0] # Get the first red band path
nir_band_path = nir_band_files[0] # Get the first NIR band path
print(f"Red band path: {red_band_path}")
print(f"NIR band path: {nir_band_path}")
else:
print("Error: One or both of the band files (B04 and B08) were not found.")
Red band path: Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B04_10m.jp2
NIR band path: Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B08_10m.jp2
Download individual bands from all found Sentinel-2 Level 2 products
Download Red and NIR bands from all products which fitted to query requirements.
product_path = f'{path_list[1]}/'
# Specify the download directory
download_dir = "./download"
# Make sure the download directory exists
os.makedirs(download_dir, exist_ok=True)
# Define specific band names
desired_bands = ['B04_10m.jp2', 'B08_10m.jp2']
resolution = '10m'
# Iterate over each path in path_list
for product_path in path_list:
product_name = product_path.split('/')[-1]
download_dir = os.path.join(main_download_dir, product_name) # Create product-specific download directory
os.makedirs(download_dir, exist_ok=True)
# Download only the specified bands
for obj in bucket.objects.filter(Prefix=product_path):
if f"IMG_DATA/R{resolution}/" in obj.key:
for band in desired_bands:
if band in obj.key: # Check if the current object's key contains the desired band
target_path = os.path.join(download_dir, obj.key[len(product_path):].lstrip('/')) # Adjust target path
os.makedirs(os.path.dirname(target_path), exist_ok=True) # Create target directory
print(f"Downloading {obj.key} to {target_path}")
bucket.download_file(obj.key, target_path)
Downloading Sentinel-2/MSI/L2A/2024/02/11/S2B_MSIL2A_20240211T021829_N0510_R003_T51PTS_20240211T050012.SAFE/GRANULE/L2A_T51PTS_A036208_20240211T023001/IMG_DATA/R10m/T51PTS_20240211T021829_B04_10m.jp2 to ./download/S2B_MSIL2A_20240211T021829_N0510_R003_T51PTS_20240211T050012.SAFE/GRANULE/L2A_T51PTS_A036208_20240211T023001/IMG_DATA/R10m/T51PTS_20240211T021829_B04_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/02/11/S2B_MSIL2A_20240211T021829_N0510_R003_T51PTS_20240211T050012.SAFE/GRANULE/L2A_T51PTS_A036208_20240211T023001/IMG_DATA/R10m/T51PTS_20240211T021829_B08_10m.jp2 to ./download/S2B_MSIL2A_20240211T021829_N0510_R003_T51PTS_20240211T050012.SAFE/GRANULE/L2A_T51PTS_A036208_20240211T023001/IMG_DATA/R10m/T51PTS_20240211T021829_B08_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/03/07/S2A_MSIL2A_20240307T021541_N0510_R003_T51PTS_20240307T053851.SAFE/GRANULE/L2A_T51PTS_A045474_20240307T022802/IMG_DATA/R10m/T51PTS_20240307T021541_B04_10m.jp2 to ./download/S2A_MSIL2A_20240307T021541_N0510_R003_T51PTS_20240307T053851.SAFE/GRANULE/L2A_T51PTS_A045474_20240307T022802/IMG_DATA/R10m/T51PTS_20240307T021541_B04_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/03/07/S2A_MSIL2A_20240307T021541_N0510_R003_T51PTS_20240307T053851.SAFE/GRANULE/L2A_T51PTS_A045474_20240307T022802/IMG_DATA/R10m/T51PTS_20240307T021541_B08_10m.jp2 to ./download/S2A_MSIL2A_20240307T021541_N0510_R003_T51PTS_20240307T053851.SAFE/GRANULE/L2A_T51PTS_A045474_20240307T022802/IMG_DATA/R10m/T51PTS_20240307T021541_B08_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/16/S2A_MSIL2A_20240416T021611_N0510_R003_T51PTS_20240416T075854.SAFE/GRANULE/L2A_T51PTS_A046046_20240416T022539/IMG_DATA/R10m/T51PTS_20240416T021611_B04_10m.jp2 to ./download/S2A_MSIL2A_20240416T021611_N0510_R003_T51PTS_20240416T075854.SAFE/GRANULE/L2A_T51PTS_A046046_20240416T022539/IMG_DATA/R10m/T51PTS_20240416T021611_B04_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/16/S2A_MSIL2A_20240416T021611_N0510_R003_T51PTS_20240416T075854.SAFE/GRANULE/L2A_T51PTS_A046046_20240416T022539/IMG_DATA/R10m/T51PTS_20240416T021611_B08_10m.jp2 to ./download/S2A_MSIL2A_20240416T021611_N0510_R003_T51PTS_20240416T075854.SAFE/GRANULE/L2A_T51PTS_A046046_20240416T022539/IMG_DATA/R10m/T51PTS_20240416T021611_B08_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/21/S2B_MSIL2A_20240421T021529_N0510_R003_T51PTS_20240421T043611.SAFE/GRANULE/L2A_T51PTS_A037209_20240421T022759/IMG_DATA/R10m/T51PTS_20240421T021529_B04_10m.jp2 to ./download/S2B_MSIL2A_20240421T021529_N0510_R003_T51PTS_20240421T043611.SAFE/GRANULE/L2A_T51PTS_A037209_20240421T022759/IMG_DATA/R10m/T51PTS_20240421T021529_B04_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/21/S2B_MSIL2A_20240421T021529_N0510_R003_T51PTS_20240421T043611.SAFE/GRANULE/L2A_T51PTS_A037209_20240421T022759/IMG_DATA/R10m/T51PTS_20240421T021529_B08_10m.jp2 to ./download/S2B_MSIL2A_20240421T021529_N0510_R003_T51PTS_20240421T043611.SAFE/GRANULE/L2A_T51PTS_A037209_20240421T022759/IMG_DATA/R10m/T51PTS_20240421T021529_B08_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B04_10m.jp2 to ./download/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B04_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B08_10m.jp2 to ./download/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B08_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/03/02/S2B_MSIL2A_20240302T021609_N0510_R003_T51PTS_20240302T043128.SAFE/GRANULE/L2A_T51PTS_A036494_20240302T022745/IMG_DATA/R10m/T51PTS_20240302T021609_B04_10m.jp2 to ./download/S2B_MSIL2A_20240302T021609_N0510_R003_T51PTS_20240302T043128.SAFE/GRANULE/L2A_T51PTS_A036494_20240302T022745/IMG_DATA/R10m/T51PTS_20240302T021609_B04_10m.jp2
Downloading Sentinel-2/MSI/L2A/2024/03/02/S2B_MSIL2A_20240302T021609_N0510_R003_T51PTS_20240302T043128.SAFE/GRANULE/L2A_T51PTS_A036494_20240302T022745/IMG_DATA/R10m/T51PTS_20240302T021609_B08_10m.jp2 to ./download/S2B_MSIL2A_20240302T021609_N0510_R003_T51PTS_20240302T043128.SAFE/GRANULE/L2A_T51PTS_A036494_20240302T022745/IMG_DATA/R10m/T51PTS_20240302T021609_B08_10m.jp2
Access individual bands without downloading (multiple files)
Iterate through the all products which fitted to query requirements to extract Red and NIR bands from each one.
# Specify the product path
product_path = f'{path_list[1]}/'
# Define specific band names
desired_bands = ['B04_10m.jp2', 'B08_10m.jp2']
resolution = '10m'
# Initialize lists to store paths of the desired band files
red_band_files = []
nir_band_files = []
# Iterate over each path in path_list
for product_path in path_list:
product_name = product_path.split('/')[-1]
# Iterate over objects in the bucket with the specified prefix
for obj in bucket.objects.filter(Prefix=product_path):
if f"IMG_DATA/R{resolution}/" in obj.key:
for band in desired_bands:
if band in obj.key: # Check if the current object's key contains the desired band
target_path = obj.key # Use the S3 object key directly
# Add the target path to the appropriate list
if band == 'B04_10m.jp2':
red_band_files.append(target_path)
elif band == 'B08_10m.jp2':
nir_band_files.append(target_path)
red_band_files, nir_band_files
(['Sentinel-2/MSI/L2A/2024/04/16/S2A_MSIL2A_20240416T021611_N0510_R003_T51PTS_20240416T075854.SAFE/GRANULE/L2A_T51PTS_A046046_20240416T022539/IMG_DATA/R10m/T51PTS_20240416T021611_B04_10m.jp2',
'Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B04_10m.jp2',
'Sentinel-2/MSI/L2A/2024/03/02/S2B_MSIL2A_20240302T021609_N0510_R003_T51PTS_20240302T043128.SAFE/GRANULE/L2A_T51PTS_A036494_20240302T022745/IMG_DATA/R10m/T51PTS_20240302T021609_B04_10m.jp2',
'Sentinel-2/MSI/L2A/2024/04/21/S2B_MSIL2A_20240421T021529_N0510_R003_T51PTS_20240421T043611.SAFE/GRANULE/L2A_T51PTS_A037209_20240421T022759/IMG_DATA/R10m/T51PTS_20240421T021529_B04_10m.jp2',
'Sentinel-2/MSI/L2A/2024/02/11/S2B_MSIL2A_20240211T021829_N0510_R003_T51PTS_20240211T050012.SAFE/GRANULE/L2A_T51PTS_A036208_20240211T023001/IMG_DATA/R10m/T51PTS_20240211T021829_B04_10m.jp2',
'Sentinel-2/MSI/L2A/2024/03/07/S2A_MSIL2A_20240307T021541_N0510_R003_T51PTS_20240307T053851.SAFE/GRANULE/L2A_T51PTS_A045474_20240307T022802/IMG_DATA/R10m/T51PTS_20240307T021541_B04_10m.jp2'],
['Sentinel-2/MSI/L2A/2024/04/16/S2A_MSIL2A_20240416T021611_N0510_R003_T51PTS_20240416T075854.SAFE/GRANULE/L2A_T51PTS_A046046_20240416T022539/IMG_DATA/R10m/T51PTS_20240416T021611_B08_10m.jp2',
'Sentinel-2/MSI/L2A/2024/04/26/S2A_MSIL2A_20240426T021611_N0510_R003_T51PTS_20240426T075954.SAFE/GRANULE/L2A_T51PTS_A046189_20240426T022416/IMG_DATA/R10m/T51PTS_20240426T021611_B08_10m.jp2',
'Sentinel-2/MSI/L2A/2024/03/02/S2B_MSIL2A_20240302T021609_N0510_R003_T51PTS_20240302T043128.SAFE/GRANULE/L2A_T51PTS_A036494_20240302T022745/IMG_DATA/R10m/T51PTS_20240302T021609_B08_10m.jp2',
'Sentinel-2/MSI/L2A/2024/04/21/S2B_MSIL2A_20240421T021529_N0510_R003_T51PTS_20240421T043611.SAFE/GRANULE/L2A_T51PTS_A037209_20240421T022759/IMG_DATA/R10m/T51PTS_20240421T021529_B08_10m.jp2',
'Sentinel-2/MSI/L2A/2024/02/11/S2B_MSIL2A_20240211T021829_N0510_R003_T51PTS_20240211T050012.SAFE/GRANULE/L2A_T51PTS_A036208_20240211T023001/IMG_DATA/R10m/T51PTS_20240211T021829_B08_10m.jp2',
'Sentinel-2/MSI/L2A/2024/03/07/S2A_MSIL2A_20240307T021541_N0510_R003_T51PTS_20240307T053851.SAFE/GRANULE/L2A_T51PTS_A045474_20240307T022802/IMG_DATA/R10m/T51PTS_20240307T021541_B08_10m.jp2'])
Summary
The notebook introduced how to download access data using s3. Now, you even know how to deal with data without downloading it.