Skip to content

openEOcubes

Michael Brüggemann edited this page Dec 17, 2023 · 6 revisions

openEOcubes

  • ist ein Repository mit einem R-Package, welches Funktionen zur Interaktionen mit dem OpenEOcubes-Backend ermöglicht
  • die Prozesse sind in processes.R definiert

Interaktion mit der API

  • derzeit ist nur das verarbeiten "synchroner" Prozesse implementiert, d.h. nur der Endpunkt .executeSynchronous hat weitere Funktionalität. Endpunkte zum anlegen von Jobs existieren zwar, haben aber keine weitere Funktionalität.
  • ruft man im Client (hier: R) compute_result() auf, dann wird als erstes der Endpunkt ".executeSynchronous" angesteuert.
  • man kann in den API Funktionen mit message() einfach Ausgaben erzugen (praktisch fürs Debugging).

Neuanlegen von Prozessen

  • wir können einfach in den neuen Prozessen auch "nicht-Datacubes" übergeben, das Backend verhindert dies nicht
    • wir müssen einfach nur herausfinden, wie man das Ergebnis dann korrekt weiter ausgibt (zwischen den Prozessen und als Endergebnis von Job$run()

Optimieren des Dockerprozesses

  • bisher wird als letztes das gesamte Repo als lokales R Package compiliert. Dies dauert im Container sehr lange.
  • Alternativ könnte man überlegen, dass ganze lokal zu machen und im Dockerfile nur bestimmen, dass die .tar des Packages in den Container kopiert und dort genutzt wird
    • Frage: Wie packe ich es an die richtige Stelle, damit alle Funktion des Packages im Container bekannt sind.

gdalcubes

  • eine Library, um mithilfe einer STAC APi Datacubes zu einem bestimmten Untersuchungsgebiet zu erstellen
  • hierfür benötigt man die BBox des Gebiets, eine Immage Kollektion mit Bildern aus diesem Gebiet und eine "Datacube-View" zu diesem Gebiet. mit raster_cube() werden diese informationen dann zu einem "Datacube" verknüpft.
  • in gdalcubes definiert man Datacubes ebenfalls wie in openEOcubes nur als Proxy Struktur. Der tatsächliche Datacube wird erst berechnet, wenn man die Daten benötigt (z.B. plotten, speichern).
  • mit extract_geom() können alle Features zu einer bestimmten Geometrie aus dem Datacube ausgelesen werden. Diese erhält man dann als stars Objekt, mit dem weitere Berechnungen durchgeführt werden können.

Ergänzen neuer Prozesse

  • um einen neuen Prozess in das Backend zu integrieren muss dieser einmal in processes.R definiert werden und in api.R in der Methode addEndpoint() als neuer Prozess (Session$assignProcess()) ergänzt werden
  • ein neuer Prozess muss für jedes Attribut der Prozess-Klasse einen Wert haben, ansonsten kann der Server diesen nicht verarbeiten.
  • die operation des neuen Prozesses muss immer den Parameter job entgegennehmen, damit das Backend funktioniert (warum ist mir nicht klar)
  • der Datacube aus data kann nicht über message() geprintet werden, da sonst der Server einen Fehler wirft (warum ist mir nicht klar)
Clone this wiki locally