Lesen von S3 Sentinel-2-Image-Dateien mit Rasterio

12

Ich habe derzeit den Fehler "Zugriff verweigert", nachdem ich rasterio zum Öffnen der Sentinel-2 AWS .jp2-Image-Dateien verwendet habe (derzeit von Sinergise gehostet und hier zu finden ).

Mein Code sieht so aus:

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

Die Antwort lautet:

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

Ich bin mir nicht sicher, ob ich die rasterio aws-Umgebungen richtig verwende. Wird der aws-Sitzungstoken-Schlüssel benötigt, auch wenn der geheime Schlüssel und der Zugriffsschlüssel bereitgestellt werden? Ich sollte auch hinzufügen, dass diese Funktion korrekt funktioniert, wenn sie mit einer Landsat-8-URL versehen ist (dh http://landsat-pds.s3.amazonaws.com/L8/139/045/LC81390452014295LGN00/LC81390452014295LGN00_B1.TIF ).

Versionen (über Anaconda installiert):

Raster - 0,36,0

Python - 2.7

Entschuldigung, wenn die oben genannten vage ist. Meine Fragen wären: Warum funktioniert dies für Landsat-8, aber nicht für Sentinel-2? Wie kann rasterio zum Öffnen von Sentinel-2-AWS-Daten verwendet werden?

bgordon
quelle

Antworten:

9

Ich glaube, Sie verwenden den falschen Bucket-Namen. Es sollte s3://sentinel-s2-l1cnicht seins3://sentinel-pds

Versuchen:

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

Weitere Informationen finden Sie hier: http://sentinel-pds.s3-website.eu-central-1.amazonaws.com/ und https://aws.amazon.com/public-datasets/sentinel-2/

Grega M.
quelle
+1 - In Sentinel-2 unter AWS heißt es ausdrücklich: "LOCATION s3: // sentinel-s2-l1c"
user2856
Ja, arbeitet mit der URL in der Antwort. Die Antwort sollte angenommen werden. Hinweis: Der Zugriff auf diese JP2-Dateien mit kostenlosen JPEG 2000-Treibern führt zu einer schlechten Leistung. Sie müssen GDAL aus dem Quellcode erstellen, indem Sie beispielsweise das nicht kostenlose MrSID-SDK verwenden, um mit JP2 eine anständige Leistung zu erzielen. Ich frage mich, ob es einen Grund gibt, warum sie JP2 anstelle von GeoTIFF gewählt haben.
sgillies
@sgillies Heisst das, dass die rasterio manylinux Räder auch diesen Leistungseinbruch erleiden? Haben Sie zufällig (öffentliche) Benchmarks / Vergleiche durchgeführt?
Kersten
1
Ich kann das MrSID-SDK nicht mit den Rädern vertreiben, daher verwenden sie den kostenlosen JP2-Treiber auf Jasper-Basis. Ich habe keine Benchmarks zu veröffentlichen.
sgillies