diff --git a/docs/_assets/vec_01_05_01.geojson b/docs/_assets/vec_01_05_01.geojson new file mode 100644 index 0000000..40c161a --- /dev/null +++ b/docs/_assets/vec_01_05_01.geojson @@ -0,0 +1,36 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "properties": {}, + "geometry": { + "coordinates": [ + [ + [ + 31.46859018095364, + -25.05563626426381 + ], + [ + 31.46859018095364, + -25.081801126663677 + ], + [ + 31.49769085376809, + -25.081801126663677 + ], + [ + 31.49769085376809, + -25.05563626426381 + ], + [ + 31.46859018095364, + -25.05563626426381 + ] + ] + ], + "type": "Polygon" + } + } + ] + } \ No newline at end of file diff --git a/docs/_toc.yml b/docs/_toc.yml index 60dd898..772bd9d 100644 --- a/docs/_toc.yml +++ b/docs/_toc.yml @@ -13,4 +13,5 @@ parts: - file: content/02_Getting_Started/01_02_Sentinel2 - file: content/02_Getting_Started/01_03_SANLC - file: content/02_Getting_Started/01_04_MSWEP + - file: content/02_Getting_Started/01_05_S1_SurfMI - file: content/02_Getting_Started/02_00_How_to diff --git a/docs/content/02_Getting_Started/01_00_Data_Access.md b/docs/content/02_Getting_Started/01_00_Data_Access.md index 8b56693..2f755fd 100644 --- a/docs/content/02_Getting_Started/01_00_Data_Access.md +++ b/docs/content/02_Getting_Started/01_00_Data_Access.md @@ -45,6 +45,7 @@ supported at the moment: - `"s2_l2a"`: Sentinel-2 Level 2A (L2A) - `"sanlc"`: South African National Land Cover (SANLC) 2020 - `"mswep"`: Multi-Source Weighted-Ensemble Precipitation (MSWEP) daily + - `"s1_surfmi"`: Sentinel-1 Surface Moisture Index (SurfMI) - `vec`: Filter the returned data spatially by either providing the name of a SALDi site in the format `"siteXX"`, where XX is the site number (e.g. `"site06"`), or a path to a vector file (any format [fiona](https://github.com/Toblerity/Fiona) diff --git a/docs/content/02_Getting_Started/01_05_S1_SurfMI.ipynb b/docs/content/02_Getting_Started/01_05_S1_SurfMI.ipynb new file mode 100644 index 0000000..13d7bf2 --- /dev/null +++ b/docs/content/02_Getting_Started/01_05_S1_SurfMI.ipynb @@ -0,0 +1,1599 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(sentinel-1-surfmi)=\n", + "# Sentinel-1 Surface Moisture Index (SurfMI)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Product description" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Sentinel-1 Surface Moisture Index (SurfMI) is derived from the {ref}`sentinel-1` \n", + "product. It is a measure of the relative surface moisture, based on the \n", + "assumption that short-term variations of the radar backscatter signal are \n", + "associated with moisture variations, while long-term changes can be related to \n", + "vegetation and surface roughness. The SurfMI $m_s(t)$ is calculated as:\n", + "\n", + "$$\n", + "m_s(t)=\\frac{\\sigma^0(t)-\\sigma_{dry}^0(t)}{\\sigma_{wet}^0(t)-\\sigma_{dry}^0(t)} * 100\n", + "$$\n", + "\n", + "where $\\sigma^0(t)$ is a backscatter time series, $\\sigma_{dry}^0(t)$ the dry \n", + "reference (permanent wilting level) and $\\sigma_{wet}^0(t)$ the wet reference \n", + "(field capacity) ([Urban et al., 2018](https://doi.org/10.3390/rs10091482)). \n", + "For the dry and wet references, the 5th and 95th percentile of the backscatter \n", + "time series are used, respectively. These layers have been pre-computed for each \n", + "SALDi site based on the available Sentinel-1 RTC VV-polarised backscatter data \n", + "so that the SurfMI can be efficiently calculated on the fly.\n", + "\n", + "The product abbreviation used in this package is `s1_surfmi`." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loading data" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
<xarray.DataArray (time: 385, latitude: 131, longitude: 147)>\n", + "dask.array<where, shape=(385, 131, 147), dtype=float32, chunksize=(385, 131, 147), chunktype=numpy.ndarray>\n", + "Coordinates:\n", + " * latitude (latitude) float64 -25.06 -25.06 -25.06 ... -25.08 -25.08\n", + " * longitude (longitude) float64 31.47 31.47 31.47 31.47 ... 31.5 31.5 31.5\n", + " spatial_ref int32 4326\n", + " * time (time) datetime64[ns] 2018-01-03T16:30:28.531898 ... 2022-12...\n", + "Attributes:\n", + " dry_reference: site06_vv_q05__20180103T163028_20230903T163910.tif\n", + " wet_reference: site06_vv_q95__20180103T163028_20230903T163910.tif
<xarray.DataArray 'precipitation' (time: 1825)>\n", + "array([ 0.375 , 1.6875 , 0. , ..., 2.7890625, 17.882812 ,\n", + " 6.015625 ], dtype=float32)\n", + "Coordinates:\n", + " * time (time) datetime64[ns] 2018-01-01 2018-01-02 ... 2022-12-31\n", + " longitude float32 31.45\n", + " latitude float32 -25.05\n", + " spatial_ref int32 4326\n", + "Attributes:\n", + " units: mm d-1
<xarray.DataArray (time: 385)>\n", + "dask.array<mean_agg-aggregate, shape=(385,), dtype=float32, chunksize=(385,), chunktype=numpy.ndarray>\n", + "Coordinates:\n", + " spatial_ref int32 4326\n", + " * time (time) datetime64[ns] 2018-01-03T16:30:28.531898 ... 2022-12...\n", + "Attributes:\n", + " dry_reference: site06_vv_q05__20180103T163028_20230903T163910.tif\n", + " wet_reference: site06_vv_q95__20180103T163028_20230903T163910.tif