Lendo arquivos de imagem do S3 Sentinel-2 com rasterio

12

No momento, estou tendo um erro 'Acesso negado' depois de usar o rasterio para abrir os arquivos de imagem .jp2 do Sentinel-2 AWS (atualmente hospedados pela Sinergise e podem ser encontrados aqui ).

Meu código fica assim:

import rasterio

access_key = '*****************'
secret_access_key = '***********************'
region_name = 'eu-central-1'

Session = rasterio.env.Env(aws_access_key_id=access_key,
             aws_secret_access_key=secret_access_key,
             region_name=region_name)

url = 's3://sentinel-pds/tiles/10/S/DG/2015/12/7/0/B01.jp2'

with Session:
    with rasterio.open(url) as dataset:
            print dataset

A resposta é:

---------------------------------------------------------------------------
CPLE_AWSAccessDenied                      Traceback (most recent call last)
<ipython-input-1-4f6da7274649> in <module>()
     12 
     13 with Session:
---> 14     with rasterio.open(url) as dataset:
     15         print dataset

/Users/Barney/anaconda/lib/python2.7/site-packages/rasterio/__init__.pyc in open(path, mode, driver, width, height, count, crs, transform, dtype, nodata,  **kwargs)
    191         raise ValueError(
    192             "mode string must be one of 'r', 'r+', or 'w', not %s" % mode)
--> 193     s.start()
    194     return s
    195 

rasterio/_base.pyx in rasterio._base.DatasetReader.start (rasterio/_base.c:2847)()

rasterio/_base.pyx in rasterio._base.DatasetReader.start (rasterio/_base.c:2799)()

rasterio/_err.pyx in rasterio._err.CPLErrors.check (rasterio/_err.c:1773)()

CPLE_AWSAccessDenied: Access Denied 

Não tenho certeza se estou usando os ambientes rasterio aws corretamente. A chave do token da sessão do aws é necessária mesmo que as chaves de acesso e segredo sejam fornecidas? Devo também acrescentar que esta função funciona corretamente se fornecida com um URL do Landsat-8 (por exemplo, http://landsat-pds.s3.amazonaws.com/L8/139/045/LC81390452014295LGN00/LC81390452014295LGN00_B1.TIF )

Versões (instaladas através do Anaconda):

rasterio - 0.36.0

python - 2.7

Desculpe se o acima é vago. Minhas perguntas seriam: por que isso funciona para o Landsat-8, mas não para o Sentinel-2? Como o rasterio pode ser usado para abrir os dados do Sentinel-2 AWS?

bgordon
fonte

Respostas:

9

Acredito que você esteja usando o nome do balde errado. Deveria ser s3://sentinel-s2-l1c, nãos3://sentinel-pds

Experimentar:

url = 's3://sentinel-s2-l1c/tiles/10/S/DG/2015/12/7/0/B01.jp2'

Veja mais informações aqui: http://sentinel-pds.s3-website.eu-central-1.amazonaws.com/ e https://aws.amazon.com/public-datasets/sentinel-2/

Grega M.
fonte
+1 - o Sentinel-2 na AWS afirma especificamente: "LOCALIZAÇÃO s3: // sentinel-s2-l1c"
user2856
Sim, trabalha com o URL na resposta. A resposta deve ser aceita. Nota: o acesso a esses arquivos JP2 usando drivers JPEG 2000 gratuitos apresenta desempenho ruim. Você precisará criar o GDAL a partir da fonte usando, por exemplo, o não-livre MrSID SDK, para obter um desempenho decente com o JP2. Gostaria de saber se há uma razão para eles terem escolhido o JP2 em vez do GeoTIFF?
sgillies
@sgillies Dsoes que significam que as rodas rasterio manylinux também sofrem esse desempenho? Por acaso, você fez benchmarks / comparações (públicas)?
22716 Kersten
1
Não posso distribuir o MrSID SDK com as rodas e, portanto, eles usam o driver JP2 gratuito baseado em Jasper. Não tenho referências para publicar.
sgillies