Verbinden von ESA SNAP mit Python auf einer CODE-DE VM

„Snappy“ ist der Name der Python-Schnittstelle zu SNAP, die es den Benutzern ermöglicht, direkt von Python-Code aus auf die Funktionen von SNAP zuzugreifen. Snappy bietet eine leistungsfähigere und flexiblere Möglichkeit zur Interaktion mit SNAP als die grafische Benutzeroberfläche (GUI) und ermöglicht die Automatisierung komplexerer Verarbeitungsabläufe.

Voraussetzungen

Nr 1. Benutzerkonto

Sie benötigen ein CODE-DE-Benutzerkonto mit Zugriff auf die Horizon-Schnittstelle: https://cloud.fra1-1.cloudferro.com/auth/login/?next=/.

Nr 2. Virtuelle Maschine mit Linux Betriebsystem und Zugriffe auf das /codede Repository

Sie benötigen eine VM mit Linux Betriebsystem und Zugriffe auf das /codede Repository. In unserem Beispiel verwenden wir Ubuntu 22.04 LTS und verbinden uns mit der VM über das ssh-Protokoll (siehe auch: Wie verbindet man sich unter Linux über SSH mit einer virtuellen Maschine?)

Eine VM der Größe eo2.2xlarge ist ausreichend zur Installation von ESA SNAP (einschliesslich aller verfügbaren Werkzeuge), anspruchsvollere Verarbeitungen erfordern allerdings stärkere Varianten (vor allem einen erhöhten RAM-Bedarf).

Nr 3. Erfolgreiche Installation von ESA SNAP auf einer Linux VM

/cloud/Installation-of-ESA-SNAP-on-an-CODE-DE-VM

Erstellen einer virtuellen Conda-Umgebung mit der erforderlichen Python-Version

Da SNAP nur Python 2.7, 3.3 bis 3.6 unterstützt, werden wir eine virtuelle Umgebung von conda verwenden, um auf einfache Weise eine ausführbare Python-Version (in diesem Fall 3.5) bereitzustellen.

Um Conda auf Linux zu installieren, laden Sie bitte die entsprechende Datei von https://www.anaconda.com/products/distribution herunter und folgen Sie den Anweisungen: https://docs.conda.io/projects/conda/en/latest/user-guide/install/linux.html oder führen Sie folgende Befehle aus:

Downloading and installing Anaconda

wget https://repo.anaconda.com/archive/Anaconda3-2022.10-Linux-x86_64.sh # download Anaconda installation file
chmod +x Anaconda3-2022.10-Linux-x86_64.sh # make it executable
bash Anaconda3-2022.10-Linux-x86_64.sh # execute file to start installation

Wichtig: Nach der Installation beenden Sie bitte das Terminal, um Änderungen zu ermöglichen, und öffnen Sie dann eine neue SSH-Verbindung!

Nun werden wir die virtuelle Umgebung mit Python 3.5 erstellen:

conda create -n py35 python=3.5

um die neue Umgebung zu aktivieren:

conda activate py35

So können Sie überprüfen, ob Python 3.5 verwendet wird:

which python
python --version

Manuelle Konfiguration des Snappy-Moduls

Wechseln Sie auf das Snap-Installationsverzeichnis im Terminal (in diesem Fall /home/eouser/snap/).

cd /home/eouser/snap/

Wechseln Sie nun in den Ordner mit den ausführbaren SNAP-Dateien

cd bin

Erzeugen Sie das Python-Modul snappy, das für die aktuelle SNAP-Installation und Ihren Python-Interpreter conda env konfiguriert ist.

./snappy-conf /home/eouser/anaconda3/envs/py35/bin/python /home/eouser/anaconda3/envs/py35/lib/

Warnung

Der Befehl kann nach Beendigung hängen bleiben und kehrt nicht zur Eingabeaufforderung zurück. Drücken Sie in diesem Fall STRG + C und beantworten Sie die Frage, ob Sie abbrechen wollen, mit nein (‚n‘).

Und das war’s, SNAP ist für die Verwendung mit Python konfiguriert.

Um es zu testen, wechseln Sie in den snappy-Ordner:

cd  /home/eouser/anaconda3/envs/py35/lib/

und aktivieren Sie die Python 3.5 Umgebung

conda activate py35

Python-Schnittstelle öffnen und ausführen:

from snappy import ProductIO

Der einfachste Weg, snappy im Code zu verwenden, ist, snappy-dir an die sys.path-Variable im Python-Code anzuhängen, bevor man snappy importiert:

import sys
sys.path.append('<snappy-dir>') # or sys.path.insert(1, '<snappy-dir>')
import snappy

Und das war’s! Sie haben erfolgreich Python mit SNAP API verbunden!