Wie man mit boto3 auf EODATA zugreift auf EO-Lab
Unter EODATA verstehen wir das Erdbeobachtungsdatenarchiv, das z.B. über CREODIAS oder das Copernicus Data Space Ecosystem verfügbar ist. Über EO-Lab können Sie direkt auf dieses Archiv zugreifen.
In diesem Artikel erfahren Sie, wie Sie von einer virtuellen Maschine unter Linux oder Windows in der EO-Lab Cloud mit der Python-Bibliothek boto3 auf das EODATA-Repository zugreifen können.
Was werden wir behandeln?
Installation von boto3
Ausführen der Skripte aus diesem Artikel
Durchsuchen von EODATA
Herunterladen einer einzelnen Datei aus dem EODATA-Repository
Voraussetzungen
Nr. 1 Konto
Sie benötigen ein EO-Lab Konto mit Zugriff auf die Horizon-Schnittstelle: https://cloud.fra1-1.cloudferro.com/auth/login/?next=/.
Nr. 2 Virtuelle Maschine
Sie benötigen eine virtuelle Maschine, die auf EO-Lab cloud läuft. Dieser Artikel ist für Ubuntu 22.04 und für Windows Server 2022 geschrieben.
Der Zugriff mit anderen Betriebssysteme könnte ebenfalls funktionieren, wird hioer aber nicht beschrieben und erfordert möglicherweise eine Anpassung der hier angegebenen Befehle.
In jedem Fall muss Ihre virtuelle Maschine Zugriff auf das Netzwerk haben, das den Zugriff auf das EODATA-Repository ermöglicht. Dieses Netzwerk heißt entweder eodata oder hat einen Namen, der mit eodata_ beginnt.
Linux VM
Sie können eine virtuelle Linux-Maschine erstellen, wie in einem der folgenden Artikel beschrieben:
Windows VM
Der folgende Artikel enthält Informationen zur Erstellung einer virtuellen Windows-Maschine: /cloud/How-to-create-Windows-VM-on-OpenStack-Horizon-and-access-it-via-web-console-on-EO-Lab
Wenn Sie die Webkonsole für den Zugriff auf Ihre virtuelle Windows-Maschine verwenden, können Sie den Artikel, den Sie gerade lesen, in einem Webbrowser (z. B. Microsoft Edge) öffnen, der auf dieser virtuellen Maschine installiert ist, und den Python-Code in einen Texteditor Ihrer Wahl kopieren.
Nr. 3 Python
Python muss auf Ihrer virtuellen Maschine installiert sein.
Wenn Sie Linux verwenden, kann dieser Artikel helfen: Wie installiert man Python virtualenv/virtualenvwrapper
Und für Windows können Sie diesen Artikel lesen: Wie man Python unter Windows installiert auf EO-Lab
Nr. 4 Erhalt von Zugangs- und des Geheim-Schlüssels
Um auf EODATA zugreifen zu können, benötigen Sie einen Zugangs- oder Access- Schlüssel und einen geheimen (secret) Schlüssel. Sie erhalten beide, indem Sie diesem Artikel folgen: Wie man Zugangsdaten für den Zugriff auf EODATA auf einer VM auf EO-Lab erhält
Nr. 5 Grundkenntnisse in Python
boto3 ist eine Python-Bibliothek, Sie müssen sich also mit Python auskennen.
Installation von boto3
Befolgen Sie die entsprechenden Verfahren zur Installation von boto3:
Installation von boto3 unter Linux
Wenn Sie eine Python-Umgebung wie virtualenv verwenden, geben Sie die Umgebung ein, in der Sie boto3 installieren möchten. Führen Sie darin den folgenden Befehl aus:
pip3 install boto3
Sie können das Paket auch global installieren:
sudo apt install python3-boto3
Installation von boto3 unter Windows
Folgen Sie diesem Artikel, um boto3 unter Windows zu installieren: Wie installiert man Boto3 unter Windows auf EO-Lab
So führen Sie die Skripte in diesem Artikel aus
Die Methode zur Ausführung der Skripte ist je nach Betriebssystem Ihrer Wahl unterschiedlich.
So führen Sie Skripte mit der Linux-Kommandozeile aus
Öffnen Sie einen Texteditor Ihrer Wahl wie nano oder vim. Fügen Sie das Skript ein. Nehmen Sie die entsprechenden Änderungen am Code vor (z. B. Zuweisung von Werten an Variablen). Speichern Sie die Datei.
Sobald Sie den Texteditor verlassen haben, führen Sie den Befehl python3 gefolgt von dem Namen Ihres Skripts in dem Verzeichnis aus, in dem es sich befindet. Zum Beispiel:
python3 browse.py
Das Skript sollte ausgeführt werden.
Ausführen von Skripten mit der Windows-Eingabeaufforderung
Öffnen Sie einen einfachen Texteditor (wie Notepad). Fügen Sie das Skript ein. Nehmen Sie die entsprechenden Änderungen am Code vor (z. B. Zuweisung von Werten an Variablen). Speichern Sie die Datei mit der Erweiterung .py (stellen Sie sicher, dass Windows nicht die Erweiterung .txt hinzufügt).
Öffnen Sie die Eingabeaufforderung (cmd.exe). Navigieren Sie zu dem Verzeichnis, in dem sich das Skript befindet, z. B. mit dem Befehl cd:
cd C:\Users\John\scripts
Führen Sie das Skript mit dem Befehl python gefolgt von seinem Namen aus, zum Beispiel:
python browse.py
EODATA durchsuchen
Sie können boto3 verwenden, um das EODATA-Repository zu durchsuchen. Der benötigte Code ist in diesem Abschnitt zu finden.
Variable Name |
Was zugewiesen werden soll |
access_key |
Ihr Zugriffs Schlüssel. Siehe Voraussetzungen Nr. 4. |
secret_key |
Ihr Secret Schlüssel. Siehe Voraussetzungen Nr. 4. |
directory |
Das Verzeichnis im EODATA Repository das sie durchsuchen wollen. |
Achten Sie beim Ausfüllen der Variablen directory darauf, dass Sie die folgenden Regeln beachten:
Verwenden Sie Schrägstriche / als Trennzeichen zwischen den Elementen des Pfades (Verzeichnisse und Dateien)
Beginnen Sie den Pfad nicht mit einem Schrägstrich /
Da das Element, das Sie untersuchen, ein Verzeichnis ist, schließen Sie den Pfad mit einem Schrägstrich ab /
Starten Sie den Pfad mit dem Namen des Ordners im Stammverzeichnis des EODATA-Repository (zum Beispiel Sentinel-2 oder Sentinel-5P)
Wenn Sie das Stammverzeichnis des EODATA-Repositorys erkunden möchten, weisen Sie der Variablen directory eine leere Zeichenfolge zu:
directory=''
Wenn Sie kein spezielles Verzeichnis haben, das Sie untersuchen möchten, sondern diese Methode einfach nur testen wollen, können Sie den Wert, der der Variablen directory im Beispielcode unten zugewiesen wurde, beibehalten.
Die Variablen host und container enthalten den EODATA-Endpunkt bzw. den Namen des verwendeten Containers. Sie brauchen sie nicht zu ändern.
import boto3
access_key='YOUR_ACCESS_KEY'
secret_key='YOUR_SECRET_KEY'
directory='Envisat-ASAR/ASAR/ASA_WSS_1P/2012/04/08/'
host='http://eodata.cloudferro.com'
container='DIAS'
s3=boto3.client('s3',aws_access_key_id=access_key, aws_secret_access_key=secret_key,endpoint_url=host)
print(s3.list_objects(Delimiter='/',Bucket=container,Prefix=directory,MaxKeys=30000)['CommonPrefixes'])
Wenn Sie Ihre access und secret Schlüssel angegeben, aber die Variable directory nicht geändert haben, listet der obige Code die Produkte auf, die im Verzeichnis Envisat-ASAR/ASAR/ASA_WSS_1P/2012/04/08/ des EODATA-Repository gefunden wurden. In diesem Fall sollte die Ausgabe wie folgt aussehen:
[{'Prefix': 'Envisat-ASAR/ASAR/ASA_WSS_1P/2012/04/08/ASA_WSS_1PNESA20120408_110329_000000603113_00267_52867_0000.N1/'}, {'Prefix': 'Envisat-ASAR/ASAR/ASA_WSS_1P/2012/04/08/ASA_WSS_1PNESA20120408_110428_000000603113_00267_52867_0000.N1/'}, {'Prefix': 'Envisat-ASAR/ASAR/ASA_WSS_1P/2012/04/08/ASA_WSS_1PNESA20120408_110446_000000603113_00267_52867_0000.N1/'}]
Diese Ausgabe kann als eine „Liste von Verzeichnissen“ beschrieben werden. Jedes dieser Verzeichnisse enthält einen Schlüssel namens Präfix, der den Pfad zu einer Datei oder einem Verzeichnis angibt. Anstatt diese Liste wie oben zu drucken, können Sie sie in einer Schleife durchlaufen, um die Lesbarkeit der Ausgabe zu verbessern:
import boto3
access_key='YOUR_ACCESS_KEY'
secret_key='YOUR_SECRET_KEY'
directory='Envisat-ASAR/ASAR/ASA_WSS_1P/2012/04/08/'
host='http://eodata.cloudferro.com'
container='DIAS'
s3=boto3.client('s3',aws_access_key_id=access_key, aws_secret_access_key=secret_key,endpoint_url=host)
for i in s3.list_objects(Delimiter='/',Bucket=container,Prefix=directory,MaxKeys=30000)['CommonPrefixes']:
print(i['Prefix'])
Dieses Mal sollte die Ausgabe nur die Pfade anzeigen:
Envisat-ASAR/ASAR/ASA_WSS_1P/2012/04/08/ASA_WSS_1PNESA20120408_110329_000000603113_00267_52867_0000.N1/
Envisat-ASAR/ASAR/ASA_WSS_1P/2012/04/08/ASA_WSS_1PNESA20120408_110428_000000603113_00267_52867_0000.N1/
Envisat-ASAR/ASAR/ASA_WSS_1P/2012/04/08/ASA_WSS_1PNESA20120408_110446_000000603113_00267_52867_0000.N1/
Herunterladen einer einzelnen Datei aus dem EODATA-Repository
Dieser Abschnitt beschreibt, wie man eine Datei aus dem EODATA-Repository herunterlädt.
Das nachstehende Skript sollte diese Datei in ein Verzeichnis herunterladen, von dem aus das Skript ausgeführt wird. Wenn dieses Verzeichnis bereits eine Datei mit demselben Namen wie die herunterzuladende Datei enthält, wird diese ohne Rückfrage überschrieben.
Ersetzen Sie im folgenden Code die folgenden Variablen:
Variable Name |
Was zugewiesen werden soll |
access_key |
Ihr Zugriffs Schlüssel. Siehe Voraussetzungen Nr. 4. |
secret_key |
Ihr Secret Schlüssel. Siehe Voraussetzungen Nr. 4. |
key |
Der Pfad (mit Verzeichnissen) zur Datei, die Sie vom EODATA Repository herunter laden wollen. |
Achten Sie beim Ausfüllen der Variablen key auf die folgenden Regeln:
Verwenden Sie Schrägstriche / als Trennzeichen zwischen den Elementen des Pfades (Verzeichnisse und Dateien)
Beginnen oder beenden Sie den Pfad nicht mit einem Schrägstrich /
Beginnen Sie den Pfad mit dem Namen des Ordners, der sich im Stammverzeichnis des EODATA-Repositorys befindet (zum Beispiel Sentinel-2 oder Sentinel-5P)
Wenn Sie keine spezielle Datei herunterladen möchten, sondern nur diese Methode testen wollen, können Sie den Wert, der der Variablen key im Beispielcode unten zugewiesen wurde, beibehalten.
Auch hier enthalten die Variablen host und container den EODATA-Endpunkt bzw. den Namen des verwendeten Containers. Sie brauchen sie nicht zu ändern.
import boto3
access_key='YOUR_ACCESS_KEY'
secret_key='YOUR_SECRET_KEY'
key='Landsat-5/TM/L1T/2011/11/16/LS05_RMPS_TM__GTC_1P_20111116T100042_20111116T100111_147386_0194_0035_4BF1/LS05_RMPS_TM__GTC_1P_20111116T100042_20111116T100111_147386_0194_0035_4BF1.BP.PNG'
host='http://eodata.cloudferro.com'
container='DIAS'
s3=boto3.resource('s3',aws_access_key_id=access_key,
aws_secret_access_key=secret_key, endpoint_url=host,)
bucket=s3.Bucket(container)
filename=key.split("/")[-1]
bucket.download_file(key, filename)
Wenn Sie Ihren Zugangsschlüssel und Ihren geheimen Schlüssel angegeben haben, aber den Inhalt der Variable key nicht geändert haben, sollte der Code die Datei namens
LS05_RMPS_TM__GTC_1P_20111116T100042_20111116T100111_147386_0194_0035_4BF1.BP.PNG
herunterladen, die sich im u.a. Stammverzeichnis des Produkts befindet:
LS05_RMPS_TM__GTC_1P_20111116T100042_20111116T100111_147386_0194_0035_4BF1
Nach der Ausführung des Skripts sollte die Ausgabe leer sein. Unabhängig davon sollte die heruntergeladene Datei in dem Verzeichnis sichtbar sein, in dem das Skript ausgeführt wurde. So sieht es zum Beispiel unter Linux aus:

Was als nächstes zu tun ist
Sie können diese Skripte weiter modifizieren, damit sie Ihren Bedürfnissen besser entsprechen, oder sie in Ihre eigenen Anwendungen integrieren. Diese Skripte könnten auch in anderen Entwicklungsumgebungen funktionieren. Auf eine Beschreibung wird hier verzichtet.
boto3 kann auch verwendet werden, um auf Objektspeicher-Container der EO-Lab Cloud: Wie man mit boto3 auf den Objektspeicher von EO-Lab zugreift zuzugreifen.