diff --git a/python/Sentinel1_Stats/Sentinel1_Stats.ipynb b/python/Sentinel1_Stats/Sentinel1_Stats.ipynb new file mode 100644 index 0000000..5abed74 --- /dev/null +++ b/python/Sentinel1_Stats/Sentinel1_Stats.ipynb @@ -0,0 +1,2361 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0021d684-bcc4-4e68-af6a-2655994d63c1", + "metadata": {}, + "source": [ + "# Publishing an openEO process as a service \n", + "\n", + "In this notebook, we want to show how to create an openEO User Defined Process(UDP). Here, we make use of an apply_dimension process that applies a process to all values along a dimension of a data cube.\n", + "\n", + "The notebook involves a section on creating a concrete datacube, inspecting netCDF downloads, and developing a parameterized version stored as a UDP. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "0dd19e44-9500-42dc-9c59-3b88dbab70b5", + "metadata": {}, + "outputs": [], + "source": [ + "import json\n", + "import openeo\n", + "import xarray\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from openeo.processes import array_create, array_concat, ProcessBuilder" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "8be7515b-d3e2-4e3c-bbf5-16a4c46329b3", + "metadata": {}, + "outputs": [], + "source": [ + "# Set some defaults for plots\n", + "plt.rcParams[\"figure.figsize\"] = [5.0, 3.0]\n", + "plt.rcParams[\"figure.dpi\"] = 75" + ] + }, + { + "cell_type": "markdown", + "id": "a8407f00-c851-4ba7-833e-07b46e5ab54a", + "metadata": {}, + "source": [ + "Connect to the openEO Platform backend (at [openeo.cloud](https://openeo.cloud/)) and authenticate with OIDC." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c9138f1c-e273-4c14-8705-44d7cfa59c7b", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Authenticated using refresh token.\n" + ] + } + ], + "source": [ + "connection = openeo.connect(\"openeo.cloud\").authenticate_oidc()" + ] + }, + { + "cell_type": "markdown", + "id": "c9223d5f-9d65-4dfd-acca-e3ca80ddc9f6", + "metadata": {}, + "source": [ + "## Inspect raw data\n", + "\n", + "Load initial data cube with raw `S1_GRD_SIGMA0_ASCENDING` data for a certain spatio-temporal extent." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "30ebbc87-07a9-4b41-82fb-969eb9048d22", + "metadata": {}, + "outputs": [], + "source": [ + "spatial_extent = {\"west\": 8.82, \"south\": 44.40, \"east\": 8.92, \"north\": 44.45}\n", + "temporal_extent = [\"2023-05-01\", \"2023-07-30\"]\n", + "\n", + "s1_raw = connection.load_collection(\n", + " collection_id=\"S1_GRD_SIGMA0_ASCENDING\",\n", + " temporal_extent=temporal_extent,\n", + " spatial_extent=spatial_extent,\n", + " bands=[\"VH\", \"VV\"],\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "cb1eb2d8-5814-4eb6-9e4a-2c0ff9e7ea8a", + "metadata": {}, + "source": [ + "Download this data cube synchronously as a netCDF file." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "91cb399a-d88e-409f-afb7-e14b448b5db0", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 181 ms, sys: 201 ms, total: 382 ms\n", + "Wall time: 30.2 s\n" + ] + } + ], + "source": [ + "%%time\n", + "s1_raw.download(\"s1sar-raw.nc\")" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "096ae68c-362e-4190-9d9e-b7e367cc2abb", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
<xarray.Dataset>\n", + "Dimensions: (t: 8, x: 798, y: 558)\n", + "Coordinates:\n", + " * t (t) datetime64[ns] 2023-05-04 2023-05-16 ... 2023-07-15 2023-07-27\n", + " * x (x) float64 4.857e+05 4.857e+05 4.857e+05 ... 4.936e+05 4.936e+05\n", + " * y (y) float64 4.922e+06 4.922e+06 4.922e+06 ... 4.916e+06 4.916e+06\n", + "Data variables:\n", + " crs |S1 b''\n", + " VH (t, y, x) float32 0.03013 0.0584 0.08698 ... 0.0002788 0.002772\n", + " VV (t, y, x) float32 0.04666 0.0581 0.09845 ... 0.02271 0.02798\n", + "Attributes:\n", + " Conventions: CF-1.9\n", + " institution: openEO platform