Lecture de fichiers image S3 Sentinel-2 avec rasterio

12

Je rencontre actuellement une erreur «Accès refusé» après avoir utilisé rasterio pour ouvrir les fichiers d'image Sentinel-2 AWS .jp2 (actuellement hébergé par Sinergise et peut être trouvé ici ).

Mon code ressemble à ceci:

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 réponse est:

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

Je ne sais pas si j'utilise correctement les environnements aws rasterio, la clé de jeton de session aws est-elle requise même si les clés secrètes et d'accès sont fournies? Je dois également ajouter que cette fonction fonctionne correctement si elle est fournie avec une URL Landsat-8 (c'est-à-dire http://landsat-pds.s3.amazonaws.com/L8/139/045/LC81390452014295LGN00/LC81390452014295LGN00_B1.TIF )

Versions (installées via Anaconda):

rasterio - 0.36.0

python - 2,7

Désolé si ce qui précède est vague. Mes questions seraient - pourquoi cela fonctionne-t-il pour Landsat-8 mais pas Sentinel-2? Comment rasterio peut-il être utilisé pour ouvrir des données Sentinel-2 AWS?

bgordon
la source

Réponses:

9

Je crois que vous utilisez le mauvais nom de compartiment. Ça devrait être s3://sentinel-s2-l1c, pass3://sentinel-pds

Essayer:

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

Voir plus d'informations ici: http://sentinel-pds.s3-website.eu-central-1.amazonaws.com/ et https://aws.amazon.com/public-datasets/sentinel-2/

Grega M.
la source
+1 - Sentinel-2 sur AWS indique spécifiquement: "LOCATION s3: // sentinel-s2-l1c"
user2856
Oui, fonctionne avec l'URL dans la réponse. La réponse doit être acceptée. Remarque: l'accès à ces fichiers JP2 à l'aide de pilotes JPEG 2000 gratuits a de mauvaises performances. Vous aurez besoin de construire GDAL à partir de la source en utilisant, par exemple, le SDK MrSID non gratuit, pour obtenir des performances décentes avec JP2. Je me demande s'il y a une raison pour laquelle ils sont allés avec JP2 au lieu de GeoTIFF?
sgillies
@sgillies Dsoes, ce qui signifie que les roues rasterio manylinux souffrent également de ces performances? Avez-vous fait par hasard des repères / comparaisons (publics)?
Kersten
1
Je ne peux pas distribuer le SDK MrSID avec les roues et ils utilisent donc le pilote JP2 gratuit basé sur Jasper. Je n'ai pas de repères à publier.
sgillies