Verbinden von ESA SNAP mit Python auf einer EO-Lab 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 EO-Lab-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-EO-Lab-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!