Lectura de archivos de imagen S3 Sentinel-2 con rasterio

12

Actualmente estoy experimentando un error de 'Acceso denegado' después de usar rasterio para abrir los archivos de imagen Sentinel-2 AWS .jp2 (actualmente alojado por Sinergise y se puede encontrar aquí ).

Mi código se ve así:

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

La respuesta es:

---------------------------------------------------------------------------
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 

No estoy seguro si estoy usando entornos rasterio aws correctamente, ¿se requiere la clave de token de sesión aws incluso si se proporcionan las claves secretas y de acceso? También debo agregar que esta función funciona correctamente si se proporciona con una URL Landsat-8 (es decir, http://landsat-pds.s3.amazonaws.com/L8/139/045/LC81390452014295LGN00/LC81390452014295LGN00_B1.TIF )

Versiones (instaladas a través de Anaconda):

rasterio - 0.36.0

python - 2.7

Lo siento si lo anterior es vago. Mis preguntas serían: ¿por qué funciona esto para Landsat-8 pero no para Sentinel-2? ¿Cómo se puede usar rasterio para abrir datos de Sentinel-2 AWS?

bgordon
fuente

Respuestas:

9

Creo que estás usando el nombre de cubo incorrecto. Debería ser s3://sentinel-s2-l1c, nos3://sentinel-pds

Tratar:

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

Ver más información aquí: http://sentinel-pds.s3-website.eu-central-1.amazonaws.com/ y https://aws.amazon.com/public-datasets/sentinel-2/

Grega M.
fuente
+1: el Sentinel-2 en AWS dice específicamente: "LOCATION s3: // sentinel-s2-l1c"
usuario2856
Sí, funciona con la URL en la respuesta. La respuesta debe ser aceptada. Nota: el acceso a estos archivos JP2 con controladores JPEG 2000 gratuitos tiene un rendimiento deficiente. Deberá crear GDAL desde la fuente utilizando, por ejemplo, el SDK MrSID no libre, para obtener un rendimiento decente con JP2. Me pregunto si hay una razón por la que eligieron JP2 en lugar de GeoTIFF.
sgillies
@sgillies ¿Eso significa que las ruedas rasterio manylinux también sufren este golpe de rendimiento? ¿Por casualidad hizo alguna referencia (pública) / comparación?
Kersten
1
No puedo distribuir el SDK MrSID con las ruedas, por lo que usan el controlador JP2 gratuito basado en Jasper. No tengo puntos de referencia para publicar.
sgillies