Skip to content
This repository has been archived by the owner on Jan 21, 2022. It is now read-only.

Coleção Sentinel-2 Level-1 não se encontra na lista de opções #88

Closed
joaofelipecsantos opened this issue May 27, 2021 · 7 comments
Closed

Comments

@joaofelipecsantos
Copy link

Issue:

  • Ao abrir as opções de dados disponíveis do BDC via stac e via web browser a opção Sentinel-2 Level-1 não está na lista.

Etapas:

  • Foi criado um ambiente dedicado para o stmetrics + stac.
  • O ambiente foi criado usando o `conda create env env-name'.
  • Abri o stmetrics e instalei todos os pacotes e dependencias.
  • O programa rodou normalmente no COLAB, mas não no JN (ver issue#11 aberto no repositório stmetrics).
  • No COLAB rodei o comando:
bdc_stac = stac.STAC('https://brazildatacube.dpi.inpe.br/stac/', access_token='coloquei meu token corretamente')
bdc_stac
  • As opções de collections disponíveis foram:
    S2-MOSAIC-PARAIBA_10_3M_STK-1
    CB4-MOSAIC-BRAZIL_64_3M_STK-1
    MOD13Q1-6
    CB4A-MOSAIC-PARAIBA_55_3M_STK-1
    CB4MUX_20-1
    LC8SR-1
    CB4MUX_20_1M_STK-1
    LC8_30-1
    S2_MSI_L2_SR_LASRC-1
    KD_S2_20M_VISBANDS_CURUAI-1
    LC8_DN-1
    MYD13Q1-6
    LC8_30_16D_STK-1
    CB4_64_16D_STK-1
    CB4_64-1
    CB4_20_1M_STK-1
    S2_10_16D_STK-1
    S2-SEN2COR_10_16D_STK-1
    LCC_C4_64_1M_STK_PA-SPC-AC-NA-1
    LCC_S2_10_1M_STK_PA-SPC-AC-NA-1
    LCC_L8_30_1M_STK_PA-SPC-AC-NA-1
    S2_10-1
    CB4-MUX-L4-SR-CMPAC-COG-1
    LCC_C4_64_1M_STK_MT_PA-SPC-AC-NA-1
    LCC_C4_64_1M_STK_GO_PA-SPC-AC-NA-1
    LCC_C4_64_1M_STK_MT_RF_PA-SPC-AC-NA-1

Esperado:

  • Encontrar na lista de collections uma opção de Sentinel-2 Level-1.
Observações:
  • A opção de Sentinel-2 Level-1 aparece para desenvolvedores do BDC, mas não para usuários cadastrados.
  • No BDC via web browser a opção de Sentinel-2 Level-1 também aparece para desenvolvedores, mas não aparece para usuários cadastrados.

Sistema:

  • Código: testado no Linux Ubuntu 18.04, Python 3.9, COLAB e JN.
  • Web browser: testado no Linux Ubuntu 18.04 Firefox, e testado no Windows 10 Google Chrome.

Obrigado pela ajuda.

@raphaelrpl
Copy link
Contributor

Olá @joaofelipecsantos,

Nos ultimos dias, essa coleção Sentinel-2 Level-1 (S2_L1C-1) estava passando por algumas mudanças internas e ficou indisponível.
Por favor, verifique novamente com o trecho de código que mencionou e deve funcionar.

Desculpe o transtorno.

@joaofelipecsantos
Copy link
Author

@raphaelrpl

A opção para Sentinel-2 Level-1 agora está ativa, obrigado.
Porém, não consigo carregar nenhuma banda.

Mensagem de erro:

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-63-3313b17a066b> in <module>
----> 1 xarray = bdc2xray(bdc_stac, data_source, bbox, timeline, my_bands)

<ipython-input-49-55688415cc03> in bdc2xray(stac, collection, bbox, time, bands)
     84 
     85         for item in range(len(items.features)):
---> 86             dataarray = file_to_da(items.features[item].assets[band]['href'], box )
     87             list_of_data_arrays.append(dataarray)
     88 

KeyError: 'NDVI'

Etapas:

  • Substituí as informações do exemplo do stmetrics com o ID 'S2_L1C-1'.
  • Testei com as bandas NDVI, B04, B08.
  • Rodei usando o stac.py e o stmetrics exemplo.
  • Tentei a dica do stac.py quando dá erro:
    import os
    del os.environ['PROJ_LIB']
  • Tentei tudo igual com o CBERS, coloquei uma banda que existe no CBERS e deu certo. Código usado no CBERS abaixo:
# Data source
data_source = 'CB4_64_16D_STK-1'  # Aqui eu substituí pelo 'S2_L1C-1'

# Bounding box
w = -45.90
n = -12.20
e = -45.20
s = -12.90
bbox = ( w,s,e,n )

# Bands
my_bands = ['NDVI']   # Aqui eu tentei para o Sentinel-2 Level-1 diferentes bandas: NDVI, B04, B08, etc.

# Timeline
start_date: '2018-09-01'
end_date: '2018-12-31'
timeline = f'{start_date}/{end_date}'

Alguma sugestão?
Se você preferir "fechar" esse issue que está resolvido, eu posso começar um novo com esse outro issue.

Obrigado pela ajuda.

@joaofelipecsantos
Copy link
Author

@raphaelrpl ,

Rodei o Sentinel-2 Level-1 no código do stac introduction.
Na parte do código abaixo:

for k in assets.keys():
    print(k)

Ele me retorna as seguintes informações (para o Sentinel-2 Level-1)
Out:
asset
thumbnail

Quando faço o mesmo código para o CBERS o output é:
Out:
EVI
NDVI
CMASK
BAND13
BAND14
BAND15
BAND16
CLEAROB
TOTALOB
thumbnail
PROVENANCE

Quando eu coloco uma banda que não existe no assets.keys() do CBERS para procurar (um teste) a mensagem de erro que eu recebo é a mesma que eu recebo com o Sentinel-2 Level-1. Parece que o problema está nesse assets do Sentinel-2 Level-1 que não tem as informações das bandas (eu acho).

Espero ter ajudado um pouco com essa informação.

@raphaelrpl
Copy link
Contributor

@joaofelipecsantos,

Na verdade, as coleções Level-1 (Sentinel S2 S2_L1C-1 ou Landsat-8 LC8_DN-1) possuem apenas os assets thumbnail e asset. A chave asset consiste
no arquivo comprimido .zip (Sentinel-2 mantido pela ESA Copernicus SciHub) ou .tar.gz (Landsat-8 mantido pela USGS). Logo, se você necessita acessar alguma banda em especifico, é necessário o download desse item feature.download() e a extração manual do arquivo comprimido. A especificação do STAC nos permite descrever como é o dado e as bandas do mesmo, mas não necessariamente toda banda descrita precisa existir no escopo de assets.

Além disso, não era para conter essa chave de indice NDVI, EVI nessa coleção. Irei repassar para o pessoal responsavel para corrigir essa metadado no nosso catalogo. Muito obrigado pela informação :)

Para acesso as bandas de indice espectrais, temos a coleção Level-2 SR para Sentinel-2 (S2_MSI_L2_SR_LASRC-1)

@joaofelipecsantos
Copy link
Author

@raphaelrpl ,

Obrigado Raphael pela informação! Me desculpa, mas tenho outra dúvida aqui, tudo bem?

Fui procurar imagens para a minha área de interesse e período de interesse. No código do stac introduction usei o comando abaixo:

items = collection.get_items(
            filter={
                'bbox':'-50.453362,-29.531077,-50.360118,-29.468340',
                'datetime':'2016-12-01/2017-01-30',
                'limit':10
            }
)
items

Esse código me retornou 1 resultado.
Achei estranho porque nessa época tinha somente o Sentinel-2A, mas mesmo assim, deveria ter frequência de amostragem de 10 dias.
Então fui no SciHub e no CREODIAS e fiz a mesma busca para minha região (granule T22JEN) e mesmo período. Nesses sites tive 9 resultados. Pensei que fosse algum critério de cobertura de nuvens usado no BDC, mas a imagem disponível no BDC tem 96% de nuvem e existem imagens com 16%, 22% e 0% de nuvens nos resultados do SciHub Copernicus e CREODIAS.
Algum motivo para ter encontrado somente 1 resultado ao inves de 9 resultados?

Fiz a mesma coisa usando o S2_MSI_L2_SR_LASRC-1 e para essa coleção não obtive resultado. Mas já adianto que usando o site do BDC existe 1 resultado de Level-2 que vem do processamento do resultado que obtive antes do Level-1.

Fui rodar os mesmos critérios no stmetrics. No notebook do stmetrics me retorna o erro abaixo:

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-110-3313b17a066b> in <module>
----> 1 xarray = bdc2xray(bdc_stac, data_source, bbox, timeline, my_bands)

<ipython-input-106-55688415cc03> in bdc2xray(stac, collection, bbox, time, bands)
     84 
     85         for item in range(len(items.features)):
---> 86             dataarray = file_to_da(items.features[item].assets[band]['href'], box )
     87             list_of_data_arrays.append(dataarray)
     88 

<ipython-input-106-55688415cc03> in file_to_da(filepath, bbox, crop)
     36 
     37     #find datetime
---> 38     match = re.findall(r'\d{4}-\d{2}-\d{2}', filepath)[-1]
     39     da.coords['time'] = match
     40 

IndexError: list index out of range

Será que a função de busca no stmetrics não está funcionando por algum motivo para o Sentinel-2? Porque fazendo para o Landsat-8 Level-2 funciona normalmente.

Por fim, fiz a mesma busca no BDC web browser. No site me retornou 1 resultado tanto para o Sentinel-2 Level-1 quanto Level-2. O resultado foi a mesma imagem encontrada pelo código do stac introduction (5 de janeiro de 2017 granule 22JEN).

Resumindo: isso é mais uma observação para informar que os resultados não batem dependendo de qual script eu estou usando (stac ou stmetrics) e que no site consigo 1 resultado (mas que deveriam ser 9 resultados comparados com o SciHub Copernicus).

Novamente, muito obrigado pela atenção e ajuda. Espero ter ajudado vocês em algo.

@raphaelrpl
Copy link
Contributor

Sobre os produtos de dados, estamos trabalhando para trazer toda série histórica do Sentinel-2 L1C e ser disponibilizado em nosso catálogo. O desafio é o grande volume de dados e estamos sempre atualizando. Embora a timeline aponte 2015-09, isso apenas reflete em algumas micro regiões do Brasil. Essa área em específico, temos outros periodos apenas o L1C.
Para o Landsat-8, temos todos os produtos Digital Number e Surperficie de Reflectância de 2016/01 até 2021/04 para o Brasil.

Foi muito bom ter levantado esses pontos, e nos ajudou muito nesses pequenos detalhes que passam despercebidos. Obrigado 😄

@joaofelipecsantos
Copy link
Author

Muito obrigado pela ajuda e explicação.

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

No branches or pull requests

2 participants