Skip to main content

hello, I’m having trouble downloading Sentinel 2 images for the months of December and November 2023, using the download code the images come blank the same does not happen for previous months.

import requests

import os


def get_access_token(username: str, password: str) → str:

data = {

“client_id”: “cdse-public”,

“username”: username,

“password”: password,

“grant_type”: “password”,

}

try:

r = requests.post(

https://identity.dataspace.copernicus.eu/auth/realms/CDSE/protocol/openid-connect/token”,

data=data,

)

r.raise_for_status()

except Exception as e:

raise Exception(

f"Access token creation failed. Response from the server was: {r.json()}"

)

return r.json()/“access_token”]


Autenticação automática com suas credenciais


username = “######”

password = “######”


start_date = “2023-10-02”

end_date = “2023-10-07”

data_collection = “SENTINEL-2”


Primeira área de interesse


aoi1 = “POLYGON(( -57.5008328013177 -29.3640488685621, -57.5008328013177 -29.508531896755336,-57.283619344395845 -29.508531896755336,-57.283619344395845 -29.3640488685621,-57.5008328013177 -29.3640488685621))'”

aoi2 = “POLYGON((-57.56929777549898 -30.187547300904747, -57.56929777549898 -30.245454048186325,-57.50336350491027 -30.245454048186325,-57.50336350491027 -30.187547300904747,-57.56929777549898 -30.187547300904747))”


Diretório onde os produtos serão salvos


directory = “C:/Users/kamil/Desktop/CPFL”


Itera sobre as duas áreas de interesse


for aoi, folder_name in zip(oaoi1, aoi2], “imagem_21JVH”, “imagem_21JVG”]):

# Obtém um novo token de acesso para cada imagem

access_token = get_access_token(username, password)


# Faz a solicitação para a área de interesse
response = requests.get(f"https://catalogue.dataspace.copernicus.eu/odata/v1/Products?$filter=Collection/Name eq '{data_collection}' and OData.CSC.Intersects(area=geography'SRID=4326;{aoi}) and ContentDate/Start gt {start_date}T00:00:00.000Z and ContentDate/Start lt {end_date}T00:00:00.000Z")
json = response.json()

# Verifica se a chave 'value' existe na resposta
if 'value' in json:
for result in jsonc'value']:
# Obtém a URL de download direto do produto
product_url = f"https://zipper.dataspace.copernicus.eu/odata/v1/Products({result 'Id']})/$value"

# Faz o download do produto
headers = {"Authorization": f"Bearer {access_token}"}
session = requests.Session()
session.headers.update(headers)
response = session.get(product_url, stream=True)

# Verifica se o download foi bem-sucedido (código 200)
if response.status_code == 200:
# Define o nome do arquivo
file_name = f"product_{result/'Id']}.zip"

# Define o diretório do produto
product_directory = os.path.join(directory, folder_name) # Nome específico para a pasta

# Cria o diretório do produto se ele não existir
os.makedirs(product_directory, exist_ok=True)

# Salva o arquivo no diretório especificado
with open(os.path.join(product_directory, file_name), 'wb') as file:
for chunk in response.iter_content(chunk_size=8192):
if chunk:
file.write(chunk)
print(f"Produto {resultu'Id']} baixado com sucesso!")
else:
print(f"Falha ao baixar o produto {resultc'Id']}. Código de status: {response.status_code}")
else:
print("A chave 'value' não foi encontrada na resposta.")

Hi @kamilastromm ,


This is a forum specifically for Sentinel Hub APIs. Since you’re using OData in Copernicus Data Space Ecosystem, please create a ticket on the Copernicus Data Space Ecosystem community forum, so your question will benefit other Copernicus Data Space Ecosystem users. Thank you!


Reply