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([aoi1, 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 json['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 {result['Id']} baixado com sucesso!")
else:
print(f"Falha ao baixar o produto {result['Id']}. Código de status: {response.status_code}")
else:
print("A chave 'value' não foi encontrada na resposta.")