Python API

Mithilfe unserer Python-Bibliothek kann die Geo Engine in Python-Projekte und Jupyter-Notebooks eingebunden werden. Daraus ergibt sich eine Vielzahl von Möglichkeiten. Verfügbare Datensätze und Berechnungsergebnisse der Geo Engine, können in Python als GeoPandas Dataframes und Numpy Arrays verwendet werden. Aufwendige Berechnungen wie Datenaufbereitung und Datenanreicherung können an die Geo Engine ausgelagert werden. Spezialalgorithmen können dann in Python entwickelt bzw. wiederverwendet werden. So kann die Geo Engine nahtlos in Ihre Data Science-Workflows eingebunden werden.

Installation

Die Installation erfolgt mittels PyPI-Package:

  • Optional: Erstellen Sie ein neues Python-Projekt und eine virtuelle Python-Umgebung mittels python3 -m venv env und aktivieren Sie diese mittels source env/bin/activate
  • Installieren Sie das Geo Engine-Package mittels pip install geoengine
  • Starten Sie die Python-Konsole oder ein Jupyter-Notebook (Optional: Wählen Sie den Kernel der erstellen virtuellen Umgebung aus)
  • Binden Sie das Package ein mittels import geoengine as ge

Demo

Zunächst importieren wir die benötigten Pakete:

import geoengine as ge
from datetime import datetime

Dann wird die Verbindung zu einer (lokalen) Geo Engine initialisiert. Um eine von uns bereitgestellte Instanz zu verwenden, kontaktieren Sie uns gerne.

ge.initialize("http://localhost:3030")

Der Workflow wird als JSON definiert (oder alternativ über eine ID, die im Web-UI über das Layer-Kontextmenü kopiert werden kann):

workflow = ge.register_workflow({
    "type": "Vector",
    "operator": {
        "type": "RasterVectorJoin",
        "params": {
                "names": ["NDVI"],
                "aggregation": "none"
        },
        "sources": {
            "vector": {
                "type": "OgrSource",
                "params": {
                    "dataset": {
                        "type": "internal",
                        "datasetId": "a9623a5b-b6c5-404b-bc5a-313ff72e4e75"
                    },
                    "attributeProjection": None
                }
            },
            "rasters": [{
                "type": "GdalSource",
                "params": {
                    "dataset": {
                        "type": "internal",
                        "datasetId": "36574dc3-560a-4b09-9d22-d5945f2b8093"
                    }
                }
            }]
        },
    }
})

Das Ergebnis wird mit einer Methode aus dem geoengine-Paket abgerufen. Vektor-Daten werden über WFS aus der Geo Engine geladen:

time = datetime.strptime('2014-04-01T12:00:00.000Z', "%Y-%m-%dT%H:%M:%S.%f%z")

data = workflow.get_dataframe(
    ge.Bbox(
        [-111.533203125, -4.482421875, 114.345703125, 73.388671875],
        [time, time]
        )
    )

Anschließend können die Daten z.B. visualisiert werden:

data.plot('NDVI', figsize=(16, 8));

Fazit

Unsere Bibliothek ermöglicht es die Geo Engine via Python in Data Science-Arbeit einzubinden.

  • Die Installation geschieht manuell oder über pip
  • Workflows können in Python definiert, von der Geo Engine berechnet
  • Ergebnisse können in Python z.B. als GeoPandas Dataframe verwendet werden