diff --git a/OSC/git_clerk_example.md b/OSC/git_clerk_example.md
index e797b3cc..46ccacfa 100644
--- a/OSC/git_clerk_example.md
+++ b/OSC/git_clerk_example.md
@@ -1,6 +1,44 @@
-# Git Clerk
-A tutorial on how to use Git Clerk, A visual interface to the Open Science Catalog, to upload data.
+# Open Science Catalog Editor
+A tutorial on how to use the Open Science Catalog Editor, A visual interface to the Open Science Catalog, to upload data.
1. First log in to https://workspace.earthcode.eox.at/
2. Accept the required permissions, so that git-clerk can open PR requests from your github account in the OSC repository.
-3. Click on the Open Science Catalog Editor.
\ No newline at end of file
+3. Click on the Open Science Catalog Editor.
+
+## Starting with the OSC Editor
+
+When you would like to add new entries, please start a new session (give it a meaningful name) and start with Adding New Project in the main page.
+Then you can proceed by providing the information directly in the form.
+
+Please see the steps with an example below:
+
+
+
+
+
+
+
+You can find here a description of required metadata for projects/products etc.: https://esa-earthcode.github.io/documentation/Technical%20Documentation/Open%20Science%20Catalog/Open%20Science%20Catalog%20Overview
+
+
+Once you have all the fields filled in you can submit the project and products metadata for review which will automatically open pull request, which will be checked and merged by our team.
+
+## In case of erorrs
+
+The tool is basically a user interface to create a github pull request on your behalf. You can view the results of your entry here: https://github.com/ESA-EarthCODE/open-science-catalog-metadata/pulls. Whenever you create a pull request or branch we run an automatic validation to ensure your data conforms to the OSC schema.
+
+**If the validation has failed you can manually inspect the errors**. If you click on the failed validation link (Validate / check (ubuntu-latest) ...) you can see the reasons for blocking the PR submissions.
+
+
+For example, your errors might look like this:
+
+
+In this case, the problems come from a missing:
+
+- Temporal extent specification
+- Missing contracts.
+- Missing links to your website and the eo4society page for the project.
+
+You can ignore the missing extensions/parent/root link/ errors those should be resolved automatically.
+
+## You can always ask the EarthCODE team for support if needed!
\ No newline at end of file
diff --git a/OSC/images/example_errors.png b/OSC/images/example_errors.png
new file mode 100644
index 00000000..090ab91c
Binary files /dev/null and b/OSC/images/example_errors.png differ
diff --git a/OSC/images/gui_main.png b/OSC/images/gui_main.png
new file mode 100644
index 00000000..135d01f4
Binary files /dev/null and b/OSC/images/gui_main.png differ
diff --git a/OSC/images/gui_preview.png b/OSC/images/gui_preview.png
new file mode 100644
index 00000000..c8da3efe
Binary files /dev/null and b/OSC/images/gui_preview.png differ
diff --git a/OSC/images/gui_start.png b/OSC/images/gui_start.png
new file mode 100644
index 00000000..82b64112
Binary files /dev/null and b/OSC/images/gui_start.png differ
diff --git a/OSC/images/validation.png b/OSC/images/validation.png
new file mode 100644
index 00000000..b177fe34
Binary files /dev/null and b/OSC/images/validation.png differ
diff --git a/PRR/TCCAS_v2.ipynb b/PRR/TCCAS_v2.ipynb
new file mode 100644
index 00000000..e67052e4
--- /dev/null
+++ b/PRR/TCCAS_v2.ipynb
@@ -0,0 +1,4236 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "1f92ff5a",
+ "metadata": {},
+ "source": [
+ "# ESA Project Results Repository: Generating STAC collections with multiple assets\n",
+ "\n",
+ "This notebook shows how to generate a valid STAC collection, which is a requirement to upload research outcomes to the [ESA Project Results Repository (PRR)](https://eoresults.esa.int/). It focuses on generating metadata for a project with multiple data files of different types. \n",
+ "\n",
+ "Check the [EarthCODE documentation](https://earthcode.esa.int/), and [PRR STAC introduction example](https://esa-earthcode.github.io/tutorials/prr-stac-introduction) for a more general introduction to STAC and the ESA PRR.\n",
+ "\n",
+ "\n",
+ "The code below demonstrates how to perform the necessary steps using real data from the ESA project **Terrestrial Carbon Community Assimilation System (TCCAS)**. The focus of TCCAS is the combination of a diverse array of observational data streams with the D&B terrestrial biosphere model into a consistent picture of the terrestrial carbon, water, and energy cycles.\n",
+ "\n",
+ "\n",
+ "🔗 Check the project website: [Terrestrial Carbon Community Assimilation System (TCCAS) – Website](https://tccas.inversion-lab.com/index.html)\n",
+ "\n",
+ "🛢️ TCCAS Dataset: [Terrestrial Carbon Community Assimilation System (TCCAS) – Data base: Sodankylä and Lapland region](https://tccas.inversion-lab.com/database/sodankylae.html)\n",
+ "\n",
+ "#### Acknowledgment \n",
+ "We gratefully acknowledge the **Terrestrial Carbon Community Assimilation System (TCCAS) team** for providing access to the data used in this example, as well as support in creating it."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "3333ec9c",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# import libraries\n",
+ "import xarray as xr\n",
+ "from pystac import Item, Collection\n",
+ "import pystac\n",
+ "from datetime import datetime\n",
+ "from shapely.geometry import box, mapping\n",
+ "from xstac import xarray_to_stac\n",
+ "import glob\n",
+ "import json\n",
+ "import shapely\n",
+ "import numpy as np\n",
+ "import pandas as pd"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "2ab07efc",
+ "metadata": {},
+ "source": [
+ "## 2. Define functions to be reused between regions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "63e3e6f4",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def add_insitu_data(collectionid, geometry, bbox, start_time, collection, insitu_href):\n",
+ " print(start_time)\n",
+ " item = Item(\n",
+ " id=f\"{collectionid}-insitu_package\",\n",
+ " geometry=geometry,\n",
+ " datetime=start_time,\n",
+ " bbox=bbox,\n",
+ " properties= {\n",
+ " \"license\": \"CC-BY-4.0\",\n",
+ " \"description\": 'Insitu package with FloX, VOD and Miscellaneous field datasets related to the TCCAS project. ',\n",
+ " }\n",
+ " )\n",
+ "\n",
+ " # 3. add an asset (the actual link to the file)\n",
+ " item.add_asset(\n",
+ " key=f'Insitu package', # title can be arbitrary\n",
+ " asset=pystac.Asset(\n",
+ " href=f'./{collectionid}/{insitu_href}',\n",
+ " media_type=\"application/tar+gzip\",\n",
+ " roles=[\"data\"],\n",
+ " )\n",
+ " )\n",
+ "\n",
+ " item.validate()\n",
+ " collection.add_item(item)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "bd6c94f6",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def add_documentation_item(collectionid, geometry, bbox, start_time, collection, ):\n",
+ " # add all the documentation under a single item\n",
+ " item = Item(\n",
+ " id=f\"{collectionid}-documentation\",\n",
+ " geometry=geometry,\n",
+ " datetime=start_time,\n",
+ " bbox=bbox,\n",
+ " properties= {\n",
+ " \"license\": \"CC-BY-4.0\",\n",
+ " \"description\": 'Documentation for the TCCAS project datasets.',\n",
+ " }\n",
+ " )\n",
+ "\n",
+ " item.add_asset(\n",
+ " key=f'TCCAS user manual.', # title can be arbitrary\n",
+ " asset=pystac.Asset(\n",
+ " href=f'./{collectionid}/TCCAS_manual.pdf',\n",
+ " media_type=\"application/pdf\",\n",
+ " roles=[\"documentation\"],\n",
+ " )\n",
+ " )\n",
+ "\n",
+ " item.add_asset(\n",
+ " key=\"Satellite Data Uncertainty analysis Scientific Report\", # title can be arbitrary\n",
+ " asset=pystac.Asset(\n",
+ " href=f'./{collectionid}/D7.pdf',\n",
+ " media_type=\"application/pdf\",\n",
+ " roles=[\"documentation\"],\n",
+ " )\n",
+ " )\n",
+ "\n",
+ " item.add_asset(\n",
+ " key=\"Campaign Data User Manual\", # title can be arbitrary\n",
+ " asset=pystac.Asset(\n",
+ " href=f'./{collectionid}/D11_CDUM-all_sites.pdf',\n",
+ " media_type=\"application/pdf\",\n",
+ " roles=[\"documentation\"],\n",
+ " )\n",
+ " )\n",
+ "\n",
+ " collection.add_item(item)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "c08edd80",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# add an item with multiple model forcing assets\n",
+ "\n",
+ "def create_model_forcing_item(collectionid, geometry, bbox, start_time, collection, model_forcing):\n",
+ "\n",
+ " item = Item(\n",
+ " id=f\"{collectionid}-model_forcing\",\n",
+ " geometry=geometry,\n",
+ " datetime=start_time,\n",
+ " bbox=bbox,\n",
+ " properties= {\n",
+ " \"license\": \"CC-BY-4.0\",\n",
+ " \"description\": ' Regional and Site-level model forcing Data Sets for Sodankylä and Lapland region, part of the TCCAS project.',\n",
+ " }\n",
+ " )\n",
+ "\n",
+ " for k,v in model_forcing.items():\n",
+ " item.add_asset(\n",
+ " key=k, # title can be arbitrary\n",
+ " asset=pystac.Asset(\n",
+ " href=f'./{collectionid}/{v}',\n",
+ " media_type=\"application/x-netcdf\",\n",
+ " roles=[\"data\"],\n",
+ " )\n",
+ " )\n",
+ "\n",
+ " item.validate()\n",
+ " collection.add_item(item)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "e37e5a77",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# some attributes extracted from xarray are not json serialisable and have to be cast to other types.\n",
+ "def convert_to_json_serialisable(attrs):\n",
+ " attrs = attrs.copy()\n",
+ " for attr in attrs.keys():\n",
+ " if isinstance(attrs[attr], np.ndarray):\n",
+ " attrs[attr] = attrs[attr].tolist()\n",
+ " elif str(type(attrs[attr])).__contains__('numpy.int'):\n",
+ " attrs[attr] = int(attrs[attr])\n",
+ " return attrs"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5bedc1dd",
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [],
+ "source": [
+ "def create_items_from_data(collectionid, geometry, bbox, collection, root_url, data_files, region):\n",
+ "\n",
+ " for dataset_name, dataset_filepath in data_files.items():\n",
+ "\n",
+ " # 1. open the netcdf file\n",
+ " ds = xr.open_dataset(root_url + dataset_filepath + '#mode=bytes')\n",
+ "\n",
+ " if 'time' in ds.coords:\n",
+ " start_time = ds['time'][0].values\n",
+ " ts = (start_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n",
+ " start_time = datetime.fromtimestamp(ts)\n",
+ "\n",
+ " end_time = ds['time'][-1].values\n",
+ " ts = (end_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n",
+ " end_time = datetime.fromtimestamp(ts)\n",
+ "\n",
+ " elif 'yymmddHH' in ds.variables:\n",
+ " string_date = '-'.join(ds['yymmddHH'][0].values.astype(str)[:3])\n",
+ " start_time = datetime.strptime(string_date, '%Y-%m-%d')\n",
+ "\n",
+ " string_date = '-'.join(ds['yymmddHH'][-1].values.astype(str)[:3])\n",
+ " end_time = datetime.strptime(string_date, '%Y-%m-%d')\n",
+ " else:\n",
+ " string_date = '-'.join(ds['yymmddHHMMSS'][0].values.astype(int).astype(str)[:3])\n",
+ " start_time = datetime.strptime(string_date, '%Y-%m-%d')\n",
+ "\n",
+ " string_date = '-'.join(ds['yymmddHHMMSS'][0].values.astype(int).astype(str)[:3])\n",
+ " end_time = datetime.strptime(string_date, '%Y-%m-%d')\n",
+ "\n",
+ " if 'description' in ds.attrs:\n",
+ " description = ds.attrs['description']\n",
+ " else:\n",
+ " description = f'Dataset with variables related to {dataset_name}.'\n",
+ " \n",
+ " template = {\n",
+ "\n",
+ " \"id\": f\"{collection.id}-{dataset_name.lower().replace(' ', '_')}\",\n",
+ " \"type\": \"Feature\",\n",
+ " \"stac_version\": \"1.0.0\",\n",
+ " \"properties\": {\n",
+ " \"title\": dataset_name,\n",
+ " \"description\": description,\n",
+ " \"start_datetime\": start_time.strftime(\"%Y-%m-%dT%H:%M:%SZ\"),\n",
+ " \"end_datetime\": end_time.strftime(\"%Y-%m-%dT%H:%M:%SZ\"),\n",
+ " \"region\": region,\n",
+ " },\n",
+ " \"geometry\": geometry,\n",
+ " \"bbox\": bbox,\n",
+ " \"assets\": {\n",
+ " \"data\": {\n",
+ " \"href\": f\"./{collectionid}/{dataset_filepath.split('/')[-1]}\", # or local path\n",
+ " \"type\": \"application/x-netcdf\",\n",
+ " \"roles\": [\"data\"],\n",
+ " \"title\": dataset_name\n",
+ " }\n",
+ " }\n",
+ " }\n",
+ "\n",
+ " # remove numpy values from attrs:\n",
+ " for var in ds.variables:\n",
+ " ds[var].attrs = convert_to_json_serialisable(ds[var].attrs)\n",
+ "\n",
+ " if 'lon' in ds.coords:\n",
+ " x_dim, y_dim = 'lon', 'lat'\n",
+ " if 'longitude' in ds.coords:\n",
+ " x_dim, y_dim ='longitude', 'latitude'\n",
+ " elif 'x' in ds.coords:\n",
+ " x_dim, y_dim = 'x', 'y'\n",
+ " else:\n",
+ " x_dim, y_dim = False, False\n",
+ " \n",
+ " # 3. Generate the STAC Item\n",
+ " item = xarray_to_stac(\n",
+ " ds,\n",
+ " template,\n",
+ " temporal_dimension=\"time\" if 'time' in ds.variables else False,\n",
+ " x_dimension=x_dim,\n",
+ " y_dimension=y_dim, \n",
+ " reference_system=False\n",
+ " )\n",
+ "\n",
+ " # validate and add the STAC Item to the collection\n",
+ " item.validate()\n",
+ "\n",
+ " # manually add license after validation since its new\n",
+ " item.properties['license'] = ds.attrs['license']\n",
+ " collection.add_item(item)\n",
+ " "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "57f0eaa6",
+ "metadata": {},
+ "source": [
+ "#### 2.2 Define 'Sodankylae and Lapland' data and links"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "ec34cfb0",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ "
\n",
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"Collection\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " id \n",
+ " \"tccas-sodankylae\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " stac_version \n",
+ " \"1.1.0\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " description \n",
+ " \"The Terrestrial Carbon Community Assimilation System (TCCAS) is built around the coupled D&B terrestrial biosphere model. D&B has been newly developed based on the well-established DALEC and BETHY models and builds on the strengths of each component model. In particular, D&B combines the dynamic simulation of the carbon pools and canopy phenology of DALEC with the dynamic simulation of water pools, and the canopy model of photosynthesis and energy balance of BETHY. D&B includes a set of observation operators for optical as well as active and passive microwave observations. The focus of TCCAS is the combination of this diverse array of observational data streams with the D&B model into a consistent picture of the terrestrial carbon, water, and energy cycles. TCCAS applies a variational assimilation approach that adjusts a combination of initial pool sizes and process parameters to match the observational data streams. This dataset includes Satelite, Field and model forcing data sets for Sodankylä and Lapland region.\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " links [] 0 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " title \n",
+ " \"Terrestrial Carbon Community Assimilation System: Database for Lapland and Sodankyla region\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " extent \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " spatial \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " bbox [] 1 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 [] 4 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 18.0 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 65.0 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 32.0 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 69.0 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " temporal \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " interval [] 1 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 [] 2 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " \"2011-01-01T00:00:00Z\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " \"2021-12-31T00:00:00Z\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " license \n",
+ " \"various\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# define dataset names and base url. If the data is locally stored, then you have to adjust these paths.\n",
+ "\n",
+ "# create the parent collection\n",
+ "root_url = 'https://lcc.inversion-lab.com/data/eo/'\n",
+ "region = 'sodankylae'\n",
+ "collectionid = \"tccas-sodankylae\"\n",
+ "bbox = [18.00, 65.00, 32.00, 69.00]\n",
+ "geometry = json.loads(json.dumps(shapely.box(*bbox).__geo_interface__))\n",
+ "data_time = pd.to_datetime('2021-12-31T00:00:00Z')\n",
+ "\n",
+ "data_files = {\n",
+ " \"Fraction of absorbed Photosynthetic Active Radiation Leaf Area Index (JRC-TIP)\": \"/jrc-tip/jrctip_fapar-lai_sodankyla_20110101-20220105.nc\",\n",
+ " \"Brightness temperature (SMOS TB)\": \"smos/smos_l3tb/SMOS_L3TB__sodankyla.nc\",\n",
+ " \"Soil moisture and Vegetation Optical Depth (SMOS SM and SMOS L-VOD)\": \"smos/smosL2/smosL2_1D_v700_sodankyla_trans.nc\",\n",
+ " \"Solar Induced Chlorophyll Fluorescence (Sentinel 5P)\": \"sif/tropomi/Sodankyla_SIF_TROPOMI_final.nc4\",\n",
+ " \"Slope (ASCAT Slope)\": \"ascat/local_slope.final/ASCAT_slope_so.nc\",\n",
+ " \"Photochemical Reflectance Index (MODIS PRI)\": \"modis/final/PRI_ESTIMATE_SODANKYLA_SINUSOIDAL.nc\",\n",
+ " \"Land Surface Temperature (MODIS LST)\": \"modis/final/LST_ESTIMATE_SODANKYLA_SINUSOIDAL.nc\",\n",
+ " \"Solar Induced Chlorophyll Fluorescence (OCO-2 SIF)\": \"sif/oco2/Sodankyla_SIF_OCO2_final.nc4\",\n",
+ " \"Vegetation Optical Depth (AMSR-2 VOD)\": \"amsr2/final/AMSR2_so.nc\"\n",
+ "} \n",
+ "\n",
+ "model_forcing = {\n",
+ " \"static-site-level\": \"FI-Sod_staticforcing.nc\",\n",
+ " \"time-dependent (ERA5) - site level\": \"FI-Sod_dynforcing-era5_20090101-20211231_with-lwdown.nc\",\n",
+ " \"time-dependent (in-situ) - site level\": \"FI-Sod_dynforcing-insitu_20090101-20211231_with-insitu-lwdown.nc\",\n",
+ " \"static-regional\": \"sodankyla-region_cgls-pft-crops-redistributed_staticforcing.nc\",\n",
+ " \"time-dependent (ERA5) - regional\": \"sodankyla-region_dynforcing_era5_2009-2021.nc\"\n",
+ "}\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "collection = Collection.from_dict(\n",
+ " \n",
+ "{\n",
+ " \"type\": \"Collection\",\n",
+ " \"id\": collectionid,\n",
+ " \"stac_version\": \"1.1.0\",\n",
+ " \"title\": \"Terrestrial Carbon Community Assimilation System: Database for Lapland and Sodankyla region\",\n",
+ " \"description\": \"The Terrestrial Carbon Community Assimilation System (TCCAS) is built around the coupled D&B terrestrial biosphere model. D&B has been newly developed based on the well-established DALEC and BETHY models and builds on the strengths of each component model. In particular, D&B combines the dynamic simulation of the carbon pools and canopy phenology of DALEC with the dynamic simulation of water pools, and the canopy model of photosynthesis and energy balance of BETHY. D&B includes a set of observation operators for optical as well as active and passive microwave observations. The focus of TCCAS is the combination of this diverse array of observational data streams with the D&B model into a consistent picture of the terrestrial carbon, water, and energy cycles. TCCAS applies a variational assimilation approach that adjusts a combination of initial pool sizes and process parameters to match the observational data streams. This dataset includes Satelite, Field and model forcing data sets for Sodankylä and Lapland region.\",\n",
+ " \"extent\": {\n",
+ " \"spatial\": {\n",
+ " \"bbox\": [\n",
+ " [\n",
+ " 18.00,\n",
+ " 65.00,\n",
+ " 32.00,\n",
+ " 69.00\n",
+ " ]\n",
+ " ]\n",
+ " },\n",
+ " \"temporal\": {\n",
+ " \"interval\": [\n",
+ " [\n",
+ " \"2011-01-01T00:00:00Z\",\n",
+ " \"2021-12-31T00:00:00Z\"\n",
+ " ]\n",
+ " ]\n",
+ " }\n",
+ " },\n",
+ " \"license\": \"various\",\n",
+ " \"links\": []\n",
+ "\n",
+ "}\n",
+ "\n",
+ ")\n",
+ "\n",
+ "collection # visualise the metadata of your collection "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "3fac9a92",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/tmp/ipykernel_119170/4235652563.py:12: UserWarning: no explicit representation of timezones available for np.datetime64\n",
+ " ts = (start_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n",
+ "/tmp/ipykernel_119170/4235652563.py:16: UserWarning: no explicit representation of timezones available for np.datetime64\n",
+ " ts = (end_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n",
+ "/tmp/ipykernel_119170/4235652563.py:8: FutureWarning: In a future version of xarray decode_timedelta will default to False rather than None. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n",
+ " ds = xr.open_dataset(root_url + dataset_filepath + '#mode=bytes')\n",
+ "/tmp/ipykernel_119170/4235652563.py:12: UserWarning: no explicit representation of timezones available for np.datetime64\n",
+ " ts = (start_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n",
+ "/tmp/ipykernel_119170/4235652563.py:16: UserWarning: no explicit representation of timezones available for np.datetime64\n",
+ " ts = (end_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n"
+ ]
+ }
+ ],
+ "source": [
+ "create_items_from_data(\n",
+ " collectionid,\n",
+ " geometry,\n",
+ " bbox,\n",
+ " collection,\n",
+ " root_url,\n",
+ " data_files,\n",
+ " region,\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "00e4d3b5",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "2021-12-31 00:00:00+00:00\n"
+ ]
+ }
+ ],
+ "source": [
+ "# add a single item with all the in-situ data, since it comes in a single .tgz file\n",
+ "\n",
+ "add_insitu_data(\n",
+ " collectionid,\n",
+ " geometry,\n",
+ " bbox,\n",
+ " data_time,\n",
+ " collection,\n",
+ " 'sodankyla-insitu-package.tgz',\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "60f80689",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "create_model_forcing_item(\n",
+ " collectionid,\n",
+ " geometry,\n",
+ " bbox,\n",
+ " data_time,\n",
+ " collection,\n",
+ " model_forcing)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "ead22923",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "add_documentation_item(\n",
+ " collectionid,\n",
+ " geometry,\n",
+ " bbox,\n",
+ " data_time,\n",
+ " collection)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "52756c30",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# save the full self-contained collection\n",
+ "collection.normalize_and_save(\n",
+ " root_href=f'../../prr_preview/{collectionid}',\n",
+ " catalog_type=pystac.CatalogType.SELF_CONTAINED\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "4a19d066",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"Collection\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " id \n",
+ " \"tccas-sodankylae\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " stac_version \n",
+ " \"1.1.0\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " description \n",
+ " \"The Terrestrial Carbon Community Assimilation System (TCCAS) is built around the coupled D&B terrestrial biosphere model. D&B has been newly developed based on the well-established DALEC and BETHY models and builds on the strengths of each component model. In particular, D&B combines the dynamic simulation of the carbon pools and canopy phenology of DALEC with the dynamic simulation of water pools, and the canopy model of photosynthesis and energy balance of BETHY. D&B includes a set of observation operators for optical as well as active and passive microwave observations. The focus of TCCAS is the combination of this diverse array of observational data streams with the D&B model into a consistent picture of the terrestrial carbon, water, and energy cycles. TCCAS applies a variational assimilation approach that adjusts a combination of initial pool sizes and process parameters to match the observational data streams. This dataset includes Satelite, Field and model forcing data sets for Sodankylä and Lapland region.\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " links [] 14 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"root\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/collection.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " title \n",
+ " \"Terrestrial Carbon Community Assimilation System: Database for Lapland and Sodankyla region\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/tccas-sodankylae-fraction_of_absorbed_photosynthetic_active_radiation_leaf_area_index_(jrc-tip)/tccas-sodankylae-fraction_of_absorbed_photosynthetic_active_radiation_leaf_area_index_(jrc-tip).json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/tccas-sodankylae-brightness_temperature_(smos_tb)/tccas-sodankylae-brightness_temperature_(smos_tb).json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/tccas-sodankylae-soil_moisture_and_vegetation_optical_depth_(smos_sm_and_smos_l-vod)/tccas-sodankylae-soil_moisture_and_vegetation_optical_depth_(smos_sm_and_smos_l-vod).json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/tccas-sodankylae-solar_induced_chlorophyll_fluorescence_(sentinel_5p)/tccas-sodankylae-solar_induced_chlorophyll_fluorescence_(sentinel_5p).json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 5 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/tccas-sodankylae-slope_(ascat_slope)/tccas-sodankylae-slope_(ascat_slope).json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 6 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/tccas-sodankylae-photochemical_reflectance_index_(modis_pri)/tccas-sodankylae-photochemical_reflectance_index_(modis_pri).json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 7 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/tccas-sodankylae-land_surface_temperature_(modis_lst)/tccas-sodankylae-land_surface_temperature_(modis_lst).json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/tccas-sodankylae-solar_induced_chlorophyll_fluorescence_(oco-2_sif)/tccas-sodankylae-solar_induced_chlorophyll_fluorescence_(oco-2_sif).json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 9 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/tccas-sodankylae-vegetation_optical_depth_(amsr-2_vod)/tccas-sodankylae-vegetation_optical_depth_(amsr-2_vod).json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 10 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/tccas-sodankylae-insitu_package/tccas-sodankylae-insitu_package.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 11 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/tccas-sodankylae-model_forcing/tccas-sodankylae-model_forcing.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 12 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/tccas-sodankylae-documentation/tccas-sodankylae-documentation.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 13 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"self\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-sodankylae/collection.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " title \n",
+ " \"Terrestrial Carbon Community Assimilation System: Database for Lapland and Sodankyla region\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " extent \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " spatial \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " bbox [] 1 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 [] 4 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 18.0 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 65.0 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 32.0 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 69.0 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " temporal \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " interval [] 1 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 [] 2 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " \"2011-01-01T00:00:00Z\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " \"2021-12-31T00:00:00Z\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " license \n",
+ " \"various\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 13,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "collection"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6968dc72",
+ "metadata": {},
+ "source": [
+ "#### 2.2 Define 'Netherlands region (including Reusel)' data and links"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "a0e00362",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"Collection\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " id \n",
+ " \"tccas-netherlands\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " stac_version \n",
+ " \"1.1.0\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " description \n",
+ " \"The Terrestrial Carbon Community Assimilation System (TCCAS) is built around the coupled D&B terrestrial biosphere model. D&B has been newly developed based on the well-established DALEC and BETHY models and builds on the strengths of each component model. In particular, D&B combines the dynamic simulation of the carbon pools and canopy phenology of DALEC with the dynamic simulation of water pools, and the canopy model of photosynthesis and energy balance of BETHY. D&B includes a set of observation operators for optical as well as active and passive microwave observations. The focus of TCCAS is the combination of this diverse array of observational data streams with the D&B model into a consistent picture of the terrestrial carbon, water, and energy cycles. TCCAS applies a variational assimilation approach that adjusts a combination of initial pool sizes and process parameters to match the observational data streams. This dataset includes Satelite, Field and model forcing data sets for the Netherlands region, including Reusel.\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " links [] 0 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " title \n",
+ " \"Terrestrial Carbon Community Assimilation System: Database for the Netherlands region (including Reusel)\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " extent \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " spatial \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " bbox [] 1 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 [] 4 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 4.502 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 47.502 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 11.477 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 51.999 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " temporal \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " interval [] 1 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 [] 2 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " \"2011-01-01T00:00:00Z\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " \"2021-12-31T00:00:00Z\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " license \n",
+ " \"various\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# define dataset names and base url. If the data is locally stored, then you have to adjust these paths.\n",
+ "\n",
+ "# create the parent collection\n",
+ "root_url = 'https://lcc.inversion-lab.com/data/eo/'\n",
+ "region = 'netherlands'\n",
+ "collectionid = \"tccas-netherlands\"\n",
+ "bbox = [4.502, 47.502, 11.477, 51.999]\n",
+ "geometry = json.loads(json.dumps(shapely.box(*bbox).__geo_interface__))\n",
+ "data_time = pd.to_datetime('2021-12-31T00:00:00Z')\n",
+ "\n",
+ "data_files = {\n",
+ " \"Vegetation Optical Depth (SMOS)\": \"smos/smosL2/smosL2_1D_v700_reusel_trans.nc\",\n",
+ " \"Slope\": \"ascat/local_slope.final/ASCAT_slope_re.nc\",\n",
+ " \"Solar Induced Chlorophyll Fluorescence\": \"sif/tropomi/Reusel_SIF_TROPOMI_final.nc4\",\n",
+ " \"Soil moisture\": \"smos/smosL2/smosL2_1D_v700_reusel_trans.nc\",\n",
+ " \"Brightness temperature\": \"smos/smos_l3tb/SMOS_L3TB__reusel.nc\",\n",
+ " \"Vegetation Optical Depth\": \"amsr2/final/AMSR2_re.nc\",\n",
+ " \"Solar Induced Chlorophyll Fluorescence (OCO2)\": \"sif/oco2/Reusel_SIF_OCO2_final.nc4\",\n",
+ " \"Land Surface Temperature\": \"modis/final/LST_ESTIMATE_REUSEL_SINUSOIDAL.nc\",\n",
+ " \"Photochemical Reflectance Index\": \"modis/final/PRI_ESTIMATE_REUSEL_SINUSOIDAL.nc\"\n",
+ "}\n",
+ "\n",
+ "\n",
+ "collection = Collection.from_dict(\n",
+ " \n",
+ "{\n",
+ " \"type\": \"Collection\",\n",
+ " \"id\": collectionid,\n",
+ " \"stac_version\": \"1.1.0\",\n",
+ " \"title\": \"Terrestrial Carbon Community Assimilation System: Database for the Netherlands region (including Reusel)\",\n",
+ " \"description\": \"The Terrestrial Carbon Community Assimilation System (TCCAS) is built around the coupled D&B terrestrial biosphere model. D&B has been newly developed based on the well-established DALEC and BETHY models and builds on the strengths of each component model. In particular, D&B combines the dynamic simulation of the carbon pools and canopy phenology of DALEC with the dynamic simulation of water pools, and the canopy model of photosynthesis and energy balance of BETHY. D&B includes a set of observation operators for optical as well as active and passive microwave observations. The focus of TCCAS is the combination of this diverse array of observational data streams with the D&B model into a consistent picture of the terrestrial carbon, water, and energy cycles. TCCAS applies a variational assimilation approach that adjusts a combination of initial pool sizes and process parameters to match the observational data streams. This dataset includes Satelite, Field and model forcing data sets for the Netherlands region, including Reusel.\",\n",
+ " \"extent\": {\n",
+ " \"spatial\": {\n",
+ " \"bbox\": [\n",
+ " [4.502, 47.502, 11.477, 51.999]\n",
+ " ]\n",
+ " },\n",
+ " \"temporal\": {\n",
+ " \"interval\": [\n",
+ " [\n",
+ " \"2011-01-01T00:00:00Z\",\n",
+ " \"2021-12-31T00:00:00Z\"\n",
+ " ]\n",
+ " ]\n",
+ " }\n",
+ " },\n",
+ " \"license\": \"various\",\n",
+ " \"links\": []\n",
+ "\n",
+ "}\n",
+ "\n",
+ ")\n",
+ "\n",
+ "collection # visualise the metadata of your collection "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "440693d4",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/tmp/ipykernel_119170/4235652563.py:8: FutureWarning: In a future version of xarray decode_timedelta will default to False rather than None. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n",
+ " ds = xr.open_dataset(root_url + dataset_filepath + '#mode=bytes')\n",
+ "/tmp/ipykernel_119170/4235652563.py:12: UserWarning: no explicit representation of timezones available for np.datetime64\n",
+ " ts = (start_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n",
+ "/tmp/ipykernel_119170/4235652563.py:16: UserWarning: no explicit representation of timezones available for np.datetime64\n",
+ " ts = (end_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n"
+ ]
+ }
+ ],
+ "source": [
+ "create_items_from_data(\n",
+ " collectionid,\n",
+ " geometry,\n",
+ " bbox,\n",
+ " collection,\n",
+ " root_url,\n",
+ " data_files,\n",
+ " region,\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "313ede7a",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "2021-12-31 00:00:00+00:00\n"
+ ]
+ }
+ ],
+ "source": [
+ "# add a single item with all the in-situ data, since it comes in a single .tgz file\n",
+ "\n",
+ "add_insitu_data(\n",
+ " collectionid,\n",
+ " geometry,\n",
+ " bbox,\n",
+ " data_time,\n",
+ " collection,\n",
+ " 'reusel-insitu-package.tgz',\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "eac3416b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "add_documentation_item(\n",
+ " collectionid,\n",
+ " geometry,\n",
+ " bbox,\n",
+ " data_time,\n",
+ " collection)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "3659deac",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# save the full self-contained collection\n",
+ "collection.normalize_and_save(\n",
+ " root_href=f'../../prr_preview/{collectionid}',\n",
+ " catalog_type=pystac.CatalogType.SELF_CONTAINED\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "bd8dac1b",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"Collection\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " id \n",
+ " \"tccas-netherlands\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " stac_version \n",
+ " \"1.1.0\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " description \n",
+ " \"The Terrestrial Carbon Community Assimilation System (TCCAS) is built around the coupled D&B terrestrial biosphere model. D&B has been newly developed based on the well-established DALEC and BETHY models and builds on the strengths of each component model. In particular, D&B combines the dynamic simulation of the carbon pools and canopy phenology of DALEC with the dynamic simulation of water pools, and the canopy model of photosynthesis and energy balance of BETHY. D&B includes a set of observation operators for optical as well as active and passive microwave observations. The focus of TCCAS is the combination of this diverse array of observational data streams with the D&B model into a consistent picture of the terrestrial carbon, water, and energy cycles. TCCAS applies a variational assimilation approach that adjusts a combination of initial pool sizes and process parameters to match the observational data streams. This dataset includes Satelite, Field and model forcing data sets for the Netherlands region, including Reusel.\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " links [] 13 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"root\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-netherlands/collection.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " title \n",
+ " \"Terrestrial Carbon Community Assimilation System: Database for the Netherlands region (including Reusel)\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-netherlands/tccas-netherlands-vegetation_optical_depth_(smos)/tccas-netherlands-vegetation_optical_depth_(smos).json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-netherlands/tccas-netherlands-slope/tccas-netherlands-slope.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-netherlands/tccas-netherlands-solar_induced_chlorophyll_fluorescence/tccas-netherlands-solar_induced_chlorophyll_fluorescence.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-netherlands/tccas-netherlands-soil_moisture/tccas-netherlands-soil_moisture.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 5 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-netherlands/tccas-netherlands-brightness_temperature/tccas-netherlands-brightness_temperature.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 6 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-netherlands/tccas-netherlands-vegetation_optical_depth/tccas-netherlands-vegetation_optical_depth.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 7 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-netherlands/tccas-netherlands-solar_induced_chlorophyll_fluorescence_(oco2)/tccas-netherlands-solar_induced_chlorophyll_fluorescence_(oco2).json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-netherlands/tccas-netherlands-land_surface_temperature/tccas-netherlands-land_surface_temperature.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 9 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-netherlands/tccas-netherlands-photochemical_reflectance_index/tccas-netherlands-photochemical_reflectance_index.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 10 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-netherlands/tccas-netherlands-insitu_package/tccas-netherlands-insitu_package.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 11 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-netherlands/tccas-netherlands-documentation/tccas-netherlands-documentation.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 12 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"self\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-netherlands/collection.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " title \n",
+ " \"Terrestrial Carbon Community Assimilation System: Database for the Netherlands region (including Reusel)\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " extent \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " spatial \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " bbox [] 1 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 [] 4 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " 4.502 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 47.502 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " 11.477 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 51.999 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " temporal \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " interval [] 1 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 [] 2 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " \"2011-01-01T00:00:00Z\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " \"2021-12-31T00:00:00Z\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " license \n",
+ " \"various\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "collection"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b20bb21f",
+ "metadata": {},
+ "source": [
+ "#### 2.2 Define 'Majadas del Tietar and Iberian region' data and links"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "ce2cc0f3",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"Collection\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " id \n",
+ " \"tccas-iberia\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " stac_version \n",
+ " \"1.1.0\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " description \n",
+ " \"The Terrestrial Carbon Community Assimilation System (TCCAS) is built around the coupled D&B terrestrial biosphere model. D&B has been newly developed based on the well-established DALEC and BETHY models and builds on the strengths of each component model. In particular, D&B combines the dynamic simulation of the carbon pools and canopy phenology of DALEC with the dynamic simulation of water pools, and the canopy model of photosynthesis and energy balance of BETHY. D&B includes a set of observation operators for optical as well as active and passive microwave observations. The focus of TCCAS is the combination of this diverse array of observational data streams with the D&B model into a consistent picture of the terrestrial carbon, water, and energy cycles. TCCAS applies a variational assimilation approach that adjusts a combination of initial pool sizes and process parameters to match the observational data streams. This dataset includes Satelite, Field and model forcing data sets for the Iberian region, including Majadas del Tietar.\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " links [] 0 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " title \n",
+ " \"Terrestrial Carbon Community Assimilation System: Database for Iberian region (including Majadas del Tietar)\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " extent \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " spatial \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " bbox [] 1 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 [] 4 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " -8.496 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 38.501 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " -2.505 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 42.997 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " temporal \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " interval [] 1 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 [] 2 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " \"2011-01-01T00:00:00Z\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " \"2021-12-31T00:00:00Z\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " license \n",
+ " \"various\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# define dataset names and base url. If the data is locally stored, then you have to adjust these paths.\n",
+ "\n",
+ "\n",
+ "# create the parent collection\n",
+ "root_url = 'https://lcc.inversion-lab.com/data/eo/'\n",
+ "region = 'iberia'\n",
+ "collectionid = \"tccas-iberia\"\n",
+ "bbox = [-8.496, 38.501, -2.505, 42.997]\n",
+ "geometry = json.loads(json.dumps(shapely.box(*bbox).__geo_interface__))\n",
+ "data_time = pd.to_datetime('2021-12-31T00:00:00Z')\n",
+ "\n",
+ "data_files = {\n",
+ " \"Vegetation Optical Depth (SMOS)\": \"smos/smosL2/smosL2_1D_v700_lasmajadas_trans.nc\",\n",
+ " \"Slope\": \"ascat/local_slope.final/ASCAT_slope_lm.nc\",\n",
+ " \"Solar Induced Chlorophyll Fluorescence\": \"sif/tropomi/Majadas_SIF_TROPOMI_final.nc4\",\n",
+ " \"Fraction of absorbed Photosynthetic Active Radiation, Leaf Area Index\": \"jrc-tip/jrctip_fapar-lai_majadas_20110101-20220105.nc\",\n",
+ " \"Soil moisture\": \"smos/smosL2/smosL2_1D_v700_lasmajadas_trans.nc\",\n",
+ " \"Brightness temperature\": \"smos/smos_l3tb/SMOS_L3TB__lasmajadas.nc\",\n",
+ " \"Vegetation Optical Depth\": \"amsr2/final/AMSR2_lm.nc\",\n",
+ " \"Land Surface Temperature\": \"modis/final/LST_ESTIMATE_MAJADAS_SINUSOIDAL.nc\",\n",
+ " \"Photochemical Reflectance Index\": \"modis/final/PRI_ESTIMATE_MAJADAS_SINUSOIDAL.nc\",\n",
+ " \"Solar Induced Chlorophyll Fluorescence (OCO2)\": \"sif/oco2/Majadas_SIF_OCO2_final.nc4\"\n",
+ "}\n",
+ "\n",
+ "model_forcing = {\n",
+ " \"static\": \"ES-LM1_staticforcing.nc\",\n",
+ " \"time-dependent (ERA5)\": \"ES-LM1_dynforcing-era5_20090101-20211231_with-lwdown.nc\",\n",
+ " \"time-dependent (in-situ)\": \"ES-LM1_dynforcing-insitu_20140401-20220930_with-insitu-lwdown.nc\",\n",
+ " \"static-regional\": \"majadas-region_cgls-pft-moli2bare_staticforcing.nc\",\n",
+ " \"time-dependent (ERA5)-regional\": \"majadas-region_dynforcing_era5_2009-2021.nc\"\n",
+ "}\n",
+ "\n",
+ "\n",
+ "\n",
+ "collection = Collection.from_dict(\n",
+ " \n",
+ "{\n",
+ " \"type\": \"Collection\",\n",
+ " \"id\": collectionid,\n",
+ " \"stac_version\": \"1.1.0\",\n",
+ " \"title\": \"Terrestrial Carbon Community Assimilation System: Database for Iberian region (including Majadas del Tietar)\",\n",
+ " \"description\": \"The Terrestrial Carbon Community Assimilation System (TCCAS) is built around the coupled D&B terrestrial biosphere model. D&B has been newly developed based on the well-established DALEC and BETHY models and builds on the strengths of each component model. In particular, D&B combines the dynamic simulation of the carbon pools and canopy phenology of DALEC with the dynamic simulation of water pools, and the canopy model of photosynthesis and energy balance of BETHY. D&B includes a set of observation operators for optical as well as active and passive microwave observations. The focus of TCCAS is the combination of this diverse array of observational data streams with the D&B model into a consistent picture of the terrestrial carbon, water, and energy cycles. TCCAS applies a variational assimilation approach that adjusts a combination of initial pool sizes and process parameters to match the observational data streams. This dataset includes Satelite, Field and model forcing data sets for the Iberian region, including Majadas del Tietar.\",\n",
+ " \"extent\": {\n",
+ " \"spatial\": {\n",
+ " \"bbox\": [\n",
+ " [-8.496, 38.501, -2.505, 42.997]\n",
+ " ]\n",
+ " },\n",
+ " \"temporal\": {\n",
+ " \"interval\": [\n",
+ " [\n",
+ " \"2011-01-01T00:00:00Z\",\n",
+ " \"2021-12-31T00:00:00Z\"\n",
+ " ]\n",
+ " ]\n",
+ " }\n",
+ " },\n",
+ " \"license\": \"various\",\n",
+ " \"links\": []\n",
+ "\n",
+ "}\n",
+ "\n",
+ ")\n",
+ "\n",
+ "collection # visualise the metadata of your collection "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "60b67132",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/tmp/ipykernel_119170/4235652563.py:12: UserWarning: no explicit representation of timezones available for np.datetime64\n",
+ " ts = (start_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n",
+ "/tmp/ipykernel_119170/4235652563.py:16: UserWarning: no explicit representation of timezones available for np.datetime64\n",
+ " ts = (end_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n",
+ "/tmp/ipykernel_119170/4235652563.py:8: FutureWarning: In a future version of xarray decode_timedelta will default to False rather than None. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n",
+ " ds = xr.open_dataset(root_url + dataset_filepath + '#mode=bytes')\n",
+ "/tmp/ipykernel_119170/4235652563.py:12: UserWarning: no explicit representation of timezones available for np.datetime64\n",
+ " ts = (start_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n",
+ "/tmp/ipykernel_119170/4235652563.py:16: UserWarning: no explicit representation of timezones available for np.datetime64\n",
+ " ts = (end_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n"
+ ]
+ }
+ ],
+ "source": [
+ "create_items_from_data(\n",
+ " collectionid,\n",
+ " geometry,\n",
+ " bbox,\n",
+ " collection,\n",
+ " root_url,\n",
+ " data_files,\n",
+ " region,\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "3f40a78c",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "2021-12-31 00:00:00+00:00\n"
+ ]
+ }
+ ],
+ "source": [
+ "# add a single item with all the in-situ data, since it comes in a single .tgz file\n",
+ "\n",
+ "add_insitu_data(\n",
+ " collectionid,\n",
+ " geometry,\n",
+ " bbox,\n",
+ " data_time,\n",
+ " collection,\n",
+ " 'lasmajadas-insitu-package.tgz',\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "25b54233",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "create_model_forcing_item(\n",
+ " collectionid,\n",
+ " geometry,\n",
+ " bbox,\n",
+ " data_time,\n",
+ " collection,\n",
+ " model_forcing)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "99d5cdda",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "add_documentation_item(\n",
+ " collectionid,\n",
+ " geometry,\n",
+ " bbox,\n",
+ " data_time,\n",
+ " collection)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "2cb20158",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# save the full self-contained collection\n",
+ "collection.normalize_and_save(\n",
+ " root_href=f'../../prr_preview/{collectionid}',\n",
+ " catalog_type=pystac.CatalogType.SELF_CONTAINED\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "7daca994",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "\n",
+ "\n",
+ "
\n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"Collection\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " id \n",
+ " \"tccas-iberia\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " stac_version \n",
+ " \"1.1.0\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " description \n",
+ " \"The Terrestrial Carbon Community Assimilation System (TCCAS) is built around the coupled D&B terrestrial biosphere model. D&B has been newly developed based on the well-established DALEC and BETHY models and builds on the strengths of each component model. In particular, D&B combines the dynamic simulation of the carbon pools and canopy phenology of DALEC with the dynamic simulation of water pools, and the canopy model of photosynthesis and energy balance of BETHY. D&B includes a set of observation operators for optical as well as active and passive microwave observations. The focus of TCCAS is the combination of this diverse array of observational data streams with the D&B model into a consistent picture of the terrestrial carbon, water, and energy cycles. TCCAS applies a variational assimilation approach that adjusts a combination of initial pool sizes and process parameters to match the observational data streams. This dataset includes Satelite, Field and model forcing data sets for the Iberian region, including Majadas del Tietar.\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " links [] 15 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"root\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/collection.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " title \n",
+ " \"Terrestrial Carbon Community Assimilation System: Database for Iberian region (including Majadas del Tietar)\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/tccas-iberia-vegetation_optical_depth_(smos)/tccas-iberia-vegetation_optical_depth_(smos).json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/tccas-iberia-slope/tccas-iberia-slope.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/tccas-iberia-solar_induced_chlorophyll_fluorescence/tccas-iberia-solar_induced_chlorophyll_fluorescence.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 4 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/tccas-iberia-fraction_of_absorbed_photosynthetic_active_radiation,_leaf_area_index/tccas-iberia-fraction_of_absorbed_photosynthetic_active_radiation,_leaf_area_index.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 5 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/tccas-iberia-soil_moisture/tccas-iberia-soil_moisture.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 6 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/tccas-iberia-brightness_temperature/tccas-iberia-brightness_temperature.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 7 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/tccas-iberia-vegetation_optical_depth/tccas-iberia-vegetation_optical_depth.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 8 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/tccas-iberia-land_surface_temperature/tccas-iberia-land_surface_temperature.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 9 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/tccas-iberia-photochemical_reflectance_index/tccas-iberia-photochemical_reflectance_index.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 10 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/tccas-iberia-solar_induced_chlorophyll_fluorescence_(oco2)/tccas-iberia-solar_induced_chlorophyll_fluorescence_(oco2).json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 11 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/tccas-iberia-insitu_package/tccas-iberia-insitu_package.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 12 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/tccas-iberia-model_forcing/tccas-iberia-model_forcing.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 13 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"item\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/tccas-iberia-documentation/tccas-iberia-documentation.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/geo+json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 14 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " rel \n",
+ " \"self\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " href \n",
+ " \"/home/krasen/prr_preview/tccas-iberia/collection.json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " type \n",
+ " \"application/json\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " title \n",
+ " \"Terrestrial Carbon Community Assimilation System: Database for Iberian region (including Majadas del Tietar)\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " extent \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " spatial \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " bbox [] 1 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 [] 4 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " -8.496 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " 38.501 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 2 \n",
+ " -2.505 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 3 \n",
+ " 42.997 \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " temporal \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " interval [] 1 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 [] 2 items \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 \n",
+ " \"2011-01-01T00:00:00Z\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " 1 \n",
+ " \"2021-12-31T00:00:00Z\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " license \n",
+ " \"various\" \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ ""
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "collection"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "pangeo",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.13.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/PRR/example_tccas.ipynb b/PRR/example_tccas.ipynb
deleted file mode 100644
index a53eff6e..00000000
--- a/PRR/example_tccas.ipynb
+++ /dev/null
@@ -1,1844 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "markdown",
- "id": "1f92ff5a",
- "metadata": {},
- "source": [
- "# ESA Project Results Repository: Generating STAC collections with multiple assets\n",
- "\n",
- "This notebook shows how to generate a valid STAC collection, which is a requirement to upload research outcomes to the [ESA Project Results Repository (PRR)](https://eoresults.esa.int/). It focuses on generating metadata for a project with multiple data files of different types. \n",
- "\n",
- "Check the [EarthCODE documentation](https://earthcode.esa.int/), and [PRR STAC introduction example](https://esa-earthcode.github.io/tutorials/prr-stac-introduction) for a more general introduction to STAC and the ESA PRR.\n",
- "\n",
- "\n",
- "The code below demonstrates how to perform the necessary steps using real data from the ESA project **Terrestrial Carbon Community Assimilation System (TCCAS)**. The focus of TCCAS is the combination of a diverse array of observational data streams with the D&B terrestrial biosphere model into a consistent picture of the terrestrial carbon, water, and energy cycles.\n",
- "\n",
- "\n",
- "🔗 Check the project website: [Terrestrial Carbon Community Assimilation System (TCCAS) – Website](https://tccas.inversion-lab.com/index.html)\n",
- "\n",
- "🛢️ TCCAS Dataset: [Terrestrial Carbon Community Assimilation System (TCCAS) – Data base: Sodankylä and Lapland region](https://tccas.inversion-lab.com/database/sodankylae.html)\n",
- "\n",
- "#### Acknowledgment \n",
- "We gratefully acknowledge the **Terrestrial Carbon Community Assimilation System (TCCAS) team** for providing access to the data used in this example, as well as support in creating it."
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 1,
- "id": "3333ec9c",
- "metadata": {},
- "outputs": [],
- "source": [
- "# import libraries\n",
- "import xarray as xr\n",
- "from pystac import Item, Collection\n",
- "import pystac\n",
- "from datetime import datetime\n",
- "from shapely.geometry import box, mapping\n",
- "import glob\n",
- "import json\n",
- "import shapely\n",
- "import numpy as np"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "6161e2c3",
- "metadata": {},
- "source": [
- "## 1. Generate the parent collection\n",
- "\n",
- "The root STAC Collection provides a general description of all project outputs which will be stored on the PRR.\n",
- "The PRR STAC Collection template enforces some required fields that you need to provide in order to build its valid description. Most of these metadata fields should already be available and can be extracted from your data.\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 2,
- "id": "869e46f3",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "\n",
- "\n",
- "
\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"Collection\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " id \n",
- " \"tccas-sodankylae\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " stac_version \n",
- " \"1.1.0\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " description \n",
- " \"The Terrestrial Carbon Community Assimilation System (TCCAS) is built around the coupled D&B terrestrial biosphere model. D&B has been newly developed based on the well-established DALEC and BETHY models and builds on the strengths of each component model. In particular, D&B combines the dynamic simulation of the carbon pools and canopy phenology of DALEC with the dynamic simulation of water pools, and the canopy model of photosynthesis and energy balance of BETHY. D&B includes a set of observation operators for optical as well as active and passive microwave observations. The focus of TCCAS is the combination of this diverse array of observational data streams with the D&B model into a consistent picture of the terrestrial carbon, water, and energy cycles. TCCAS applies a variational assimilation approach that adjusts a combination of initial pool sizes and process parameters to match the observational data streams. This dataset includes Satelite, Field and model forcing data sets for Sodankylä and Lapland region.\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " links [] 0 items \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " title \n",
- " \"Terrestrial Carbon Community Assimilation System: Database for Lapland and Sodankyla region\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " extent \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " spatial \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " bbox [] 1 items \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 [] 4 items \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 18.0 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 1 \n",
- " 65.0 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 2 \n",
- " 32.0 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 3 \n",
- " 69.0 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " temporal \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " interval [] 1 items \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 [] 2 items \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " \"2011-01-01T00:00:00Z\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 1 \n",
- " \"2021-12-31T00:00:00Z\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " license \n",
- " \"various\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- ""
- ]
- },
- "execution_count": 2,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# create the parent collection\n",
- "collectionid = \"tccas-sodankylae\"\n",
- "\n",
- "\n",
- "collection = Collection.from_dict(\n",
- " \n",
- "{\n",
- " \"type\": \"Collection\",\n",
- " \"id\": collectionid,\n",
- " \"stac_version\": \"1.1.0\",\n",
- " \"title\": \"Terrestrial Carbon Community Assimilation System: Database for Lapland and Sodankyla region\",\n",
- " \"description\": \"The Terrestrial Carbon Community Assimilation System (TCCAS) is built around the coupled D&B terrestrial biosphere model. D&B has been newly developed based on the well-established DALEC and BETHY models and builds on the strengths of each component model. In particular, D&B combines the dynamic simulation of the carbon pools and canopy phenology of DALEC with the dynamic simulation of water pools, and the canopy model of photosynthesis and energy balance of BETHY. D&B includes a set of observation operators for optical as well as active and passive microwave observations. The focus of TCCAS is the combination of this diverse array of observational data streams with the D&B model into a consistent picture of the terrestrial carbon, water, and energy cycles. TCCAS applies a variational assimilation approach that adjusts a combination of initial pool sizes and process parameters to match the observational data streams. This dataset includes Satelite, Field and model forcing data sets for Sodankylä and Lapland region.\",\n",
- " \"extent\": {\n",
- " \"spatial\": {\n",
- " \"bbox\": [\n",
- " [\n",
- " 18.00,\n",
- " 65.00,\n",
- " 32.00,\n",
- " 69.00\n",
- " ]\n",
- " ]\n",
- " },\n",
- " \"temporal\": {\n",
- " \"interval\": [\n",
- " [\n",
- " \"2011-01-01T00:00:00Z\",\n",
- " \"2021-12-31T00:00:00Z\"\n",
- " ]\n",
- " ]\n",
- " }\n",
- " },\n",
- " \"license\": \"various\",\n",
- " \"links\": []\n",
- "\n",
- "}\n",
- "\n",
- ")\n",
- "\n",
- "collection # visualise the metadata of your collection "
- ]
- },
- {
- "cell_type": "markdown",
- "id": "2ab07efc",
- "metadata": {},
- "source": [
- "## 2. Create STAC Items and STAC Assets from original dataset \n",
- "\n",
- "The second step is to describe the different files as STAC Items and Assets. Take your time to decide how your data should be categorised to improve usability of the data, and ensure intuitive navigation through different items in the collections. There are multiple strategies for doing this and this tutorial demonstrate one of the possible ways of doing that. Examples of how other ESA projects are doing this are available in the [EarthCODE tutorials](https://esa-earthcode.github.io/tutorials/prr-stac-introduction)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "eb7701f9-d671-40f5-8bd0-4f85311ff72d",
- "metadata": {},
- "source": [
- "#### 2.1 Create STAC Item from Satellite Dataset"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 3,
- "id": "60ad7781",
- "metadata": {},
- "outputs": [],
- "source": [
- "# define dataset names and base url. If the data is locally stored, then you have to adjust these paths.\n",
- "\n",
- "\n",
- "root_url = 'https://lcc.inversion-lab.com/data/eo/'\n",
- "data_files = {\n",
- " \"Fraction of absorbed Photosynthetic Active Radiation Leaf Area Index (JRC-TIP)\": \"/jrc-tip/jrctip_fapar-lai_sodankyla_20110101-20220105.nc\",\n",
- " \"Brightness temperature (SMOS TB)\": \"smos/smos_l3tb/SMOS_L3TB__sodankyla.nc\",\n",
- " \"Soil moisture and Vegetation Optical Depth (SMOS SM and SMOS L-VOD)\": \"smos/smosL2/smosL2_1D_v700_sodankyla_trans.nc\",\n",
- " \"Solar Induced Chlorophyll Fluorescence (Sentinel 5P)\": \"sif/tropomi/Sodankyla_SIF_TROPOMI_final.nc4\",\n",
- " \"Slope (ASCAT Slope)\": \"ascat/local_slope.final/ASCAT_slope_so.nc\",\n",
- " \"Photochemical Reflectance Index (MODIS PRI)\": \"modis/final/PRI_ESTIMATE_SODANKYLA_SINUSOIDAL.nc\",\n",
- " \"Land Surface Temperature (MODIS LST)\": \"modis/final/LST_ESTIMATE_SODANKYLA_SINUSOIDAL.nc\",\n",
- " \"Solar Induced Chlorophyll Fluorescence (OCO-2 SIF)\": \"sif/oco2/Sodankyla_SIF_OCO2_final.nc4\",\n",
- " \"Vegetation Optical Depth (AMSR-2 VOD)\": \"amsr2/final/AMSR2_so.nc\"\n",
- "} "
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 4,
- "id": "30dfc770",
- "metadata": {},
- "outputs": [],
- "source": [
- "# fix the same bbox and geometry for all items in the region\n",
- "bbox = [18.00, 65.00, 32.00, 69.00]\n",
- "geometry = json.loads(json.dumps(shapely.box(*bbox).__geo_interface__))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 5,
- "id": "e37e5a77",
- "metadata": {},
- "outputs": [],
- "source": [
- "# some attributes extracted from xarray are not json serialisable and have to be cast to other types.\n",
- "def convert_to_json_serialisable(attrs):\n",
- " attrs = attrs.copy()\n",
- " for attr in attrs.keys():\n",
- " if isinstance(attrs[attr], np.ndarray):\n",
- " attrs[attr] = attrs[attr].tolist()\n",
- " elif str(type(attrs[attr])).__contains__('numpy.int'):\n",
- " attrs[attr] = int(attrs[attr])\n",
- " return attrs"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 6,
- "id": "5bedc1dd",
- "metadata": {
- "scrolled": true
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "/tmp/ipykernel_47640/2301298067.py:9: UserWarning: no explicit representation of timezones available for np.datetime64\n",
- " ts = (start_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n",
- "/tmp/ipykernel_47640/2301298067.py:5: FutureWarning: In a future version of xarray decode_timedelta will default to False rather than None. To silence this warning, set decode_timedelta to True, False, or a 'CFTimedeltaCoder' instance.\n",
- " ds = xr.open_dataset(root_url + dataset_filepath + '#mode=bytes')\n",
- "/tmp/ipykernel_47640/2301298067.py:9: UserWarning: no explicit representation of timezones available for np.datetime64\n",
- " ts = (start_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n"
- ]
- }
- ],
- "source": [
- "# for each dataset create an item\n",
- "for dataset_name, dataset_filepath in data_files.items():\n",
- "\n",
- " # 1. open the netcdf file\n",
- " ds = xr.open_dataset(root_url + dataset_filepath + '#mode=bytes')\n",
- "\n",
- " if 'time' in ds.coords:\n",
- " start_time = ds['time'][0].values\n",
- " ts = (start_time - np.datetime64('1970-01-01T00:00:00Z')) / np.timedelta64(1, 's')\n",
- " start_time = datetime.fromtimestamp(ts)\n",
- " elif 'yymmddHH' in ds.variables:\n",
- " string_date = '-'.join(ds['yymmddHH'][0].values.astype(str)[:3])\n",
- " start_time = datetime.strptime(string_date, '%Y-%m-%d')\n",
- " else:\n",
- " string_date = '-'.join(ds['yymmddHHMMSS'][0].values.astype(int).astype(str)[:3])\n",
- " start_time = datetime.strptime(string_date, '%Y-%m-%d')\n",
- "\n",
- " # 3. Create a STAC item with the extracted properties\n",
- " item = Item(\n",
- " id=f\"{collection.id}-{dataset_name.lower().replace(' ', '_')}\",\n",
- " geometry=geometry,\n",
- " datetime=start_time,\n",
- " bbox=bbox,\n",
- " properties= {\n",
- " \"license\": ds.attrs['license'],\n",
- " \"description\": f'Dataset with variables related to {dataset_name}.',\n",
- " }\n",
- " )\n",
- "\n",
- " if len(item.properties['license']) > 20:\n",
- " item.properties['license'] = 'TIP-FAPAR-1.7'\n",
- "\n",
- " # 3. add an asset (the actual link to the file)\n",
- " item.add_asset(\n",
- " key=f'Dataset with variables related to {dataset_name}.', # title can be arbitrary\n",
- " asset=pystac.Asset(\n",
- " href=f'/d/{collectionid}/{dataset_filepath.split('/')[-1]}',\n",
- " media_type=\"application/x-netcdf\",\n",
- " roles=[\"data\"],\n",
- " )\n",
- " )\n",
- "\n",
- " # 4. Extract variable information\n",
- " for v in ds.variables:\n",
- " item.properties[f\"variable_{v}\"] = convert_to_json_serialisable(ds.variables[v].attrs)\n",
- "\n",
- " item.validate()\n",
- "\n",
- " # 5. Add the item to the collection\n",
- " collection.add_item(item)\n",
- " "
- ]
- },
- {
- "cell_type": "markdown",
- "id": "aed954c0-39cc-4833-a30b-8d64f4fe38b5",
- "metadata": {},
- "source": [
- "#### 2.2 Create STAC Item from In situ Dataset"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 7,
- "id": "00e4d3b5",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "\n",
- "\n",
- "
\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " None \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " >"
- ]
- },
- "execution_count": 7,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# add a single item with all the in-situ data, since it comes in a single .tgz file\n",
- "item = Item(\n",
- " id=f\"{collection.id}-insitu_package\",\n",
- " geometry=geometry,\n",
- " datetime=start_time,\n",
- " bbox=bbox,\n",
- " properties= {\n",
- " \"license\": \"CC-BY-4.0\",\n",
- " \"description\": 'Insitu package with FloX, VOD and Miscellaneous field datasets related to the TCCAS project. ',\n",
- " }\n",
- ")\n",
- "\n",
- "# 3. add an asset (the actual link to the file)\n",
- "item.add_asset(\n",
- " key=f'Insitu package', # title can be arbitrary\n",
- " asset=pystac.Asset(\n",
- " href=f'/d/{collectionid}/sodankyla-insitu-package.tgz',\n",
- " media_type=\"application/tar+gzip\",\n",
- " roles=[\"data\"],\n",
- " )\n",
- ")\n",
- "\n",
- "item.validate()\n",
- "collection.add_item(item)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "76ae5696-ef72-4006-92fa-6259ed27687d",
- "metadata": {},
- "source": [
- "#### 2.3 Create STAC Item from Model based Dataset"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 8,
- "id": "60f80689",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "\n",
- "\n",
- "
\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " None \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " >"
- ]
- },
- "execution_count": 8,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# add an item with multiple model forcing assets\n",
- "item = Item(\n",
- " id=f\"{collectionid}-model_forcing\",\n",
- " geometry=geometry,\n",
- " datetime=start_time,\n",
- " bbox=bbox,\n",
- " properties= {\n",
- " \"license\": \"CC-BY-4.0\",\n",
- " \"description\": ' Regional and Site-level model forcing Data Sets for Sodankylä and Lapland region, part of the TCCAS project.',\n",
- " }\n",
- ")\n",
- "\n",
- "\n",
- "# 3. add an asset (the actual link to the file)\n",
- "item.add_asset(\n",
- " key=f'static-site-level', # title can be arbitrary\n",
- " asset=pystac.Asset(\n",
- " href=f'/d/{collectionid}/FI-Sod_staticforcing.nc',\n",
- " media_type=\"application/x-netcdf\",\n",
- " roles=[\"data\"],\n",
- " )\n",
- ")\n",
- "\n",
- "item.add_asset(\n",
- " key=f'time-dependent (ERA5) - site level', # title can be arbitrary\n",
- " asset=pystac.Asset(\n",
- " href=f'/d/{collectionid}/FI-Sod_dynforcing-era5_20090101-20211231_with-lwdown.nc',\n",
- " media_type=\"application/x-netcdf\",\n",
- " roles=[\"data\"],\n",
- " )\n",
- ")\n",
- "\n",
- "item.add_asset(\n",
- " key=f'time-dependent (in-situ) - site level', # title can be arbitrary\n",
- " asset=pystac.Asset(\n",
- " href=f'/d/{collectionid}/FI-Sod_dynforcing-insitu_20090101-20211231_with-insitu-lwdown.nc',\n",
- " media_type=\"application/x-netcdf\",\n",
- " roles=[\"data\"],\n",
- " )\n",
- ")\n",
- "\n",
- "item.add_asset(\n",
- " key=f'static-regional', # title can be arbitrary\n",
- " asset=pystac.Asset(\n",
- " href=f'/d/{collectionid}/sodankyla-region_cgls-pft-crops-redistributed_staticforcing.nc',\n",
- " media_type=\"application/x-netcdf\",\n",
- " roles=[\"data\"],\n",
- " )\n",
- ")\n",
- "\n",
- "item.add_asset(\n",
- " key=f'time-dependent (ERA5) - regional', # title can be arbitrary\n",
- " asset=pystac.Asset(\n",
- " href=f'/d/{collectionid}/sodankyla-region_dynforcing_era5_2009-2021.nc',\n",
- " media_type=\"application/x-netcdf\",\n",
- " roles=[\"data\"],\n",
- " )\n",
- ")\n",
- "\n",
- "item.validate()\n",
- "collection.add_item(item)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "f3f3ff6e-7c18-499b-960f-3ec82e763a88",
- "metadata": {},
- "source": [
- "#### 2.4 Create STAC Item for the documentation and add to the Collection"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 9,
- "id": "ead22923",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "\n",
- "\n",
- "
\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " None \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " >"
- ]
- },
- "execution_count": 9,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# add all the documentation under a single item\n",
- "item = Item(\n",
- " id=f\"{collectionid}-documentation\",\n",
- " geometry=geometry,\n",
- " datetime=start_time,\n",
- " bbox=bbox,\n",
- " properties= {\n",
- " \"license\": \"CC-BY-4.0\",\n",
- " \"description\": 'Documentation for the TCCAS project datasets.',\n",
- " }\n",
- ")\n",
- "\n",
- "item.add_asset(\n",
- " key=f'TCCAS user manual.', # title can be arbitrary\n",
- " asset=pystac.Asset(\n",
- " href=f'/d/{collectionid}/TCCAS_manual.pdf',\n",
- " media_type=\"application/pdf\",\n",
- " roles=[\"documentation\"],\n",
- " )\n",
- ")\n",
- "\n",
- "item.add_asset(\n",
- " key=\"Satellite Data Uncertainty analysis Scientific Report\", # title can be arbitrary\n",
- " asset=pystac.Asset(\n",
- " href=f'/d/{collectionid}/D7.pdf',\n",
- " media_type=\"application/pdf\",\n",
- " roles=[\"documentation\"],\n",
- " )\n",
- ")\n",
- "\n",
- "item.add_asset(\n",
- " key=\"Campaign Data User Manual\", # title can be arbitrary\n",
- " asset=pystac.Asset(\n",
- " href=f'/d/{collectionid}/D11_CDUM-all_sites.pdf',\n",
- " media_type=\"application/pdf\",\n",
- " roles=[\"documentation\"],\n",
- " )\n",
- ")\n",
- "\n",
- "collection.add_item(item)"
- ]
- },
- {
- "cell_type": "markdown",
- "id": "33d4ffee",
- "metadata": {},
- "source": [
- "## 3. Save the metadata as a self-contained collection"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 10,
- "id": "52756c30",
- "metadata": {},
- "outputs": [],
- "source": [
- "# save the full self-contained collection\n",
- "collection.normalize_and_save(\n",
- " root_href='./data/example_catalog/',\n",
- " catalog_type=pystac.CatalogType.SELF_CONTAINED\n",
- ")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 11,
- "id": "4a19d066",
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "\n",
- "\n",
- "
\n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"Collection\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " id \n",
- " \"tccas-sodankylae\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " stac_version \n",
- " \"1.1.0\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " description \n",
- " \"The Terrestrial Carbon Community Assimilation System (TCCAS) is built around the coupled D&B terrestrial biosphere model. D&B has been newly developed based on the well-established DALEC and BETHY models and builds on the strengths of each component model. In particular, D&B combines the dynamic simulation of the carbon pools and canopy phenology of DALEC with the dynamic simulation of water pools, and the canopy model of photosynthesis and energy balance of BETHY. D&B includes a set of observation operators for optical as well as active and passive microwave observations. The focus of TCCAS is the combination of this diverse array of observational data streams with the D&B model into a consistent picture of the terrestrial carbon, water, and energy cycles. TCCAS applies a variational assimilation approach that adjusts a combination of initial pool sizes and process parameters to match the observational data streams. This dataset includes Satelite, Field and model forcing data sets for Sodankylä and Lapland region.\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " links [] 14 items \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"root\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/collection.json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " title \n",
- " \"Terrestrial Carbon Community Assimilation System: Database for Lapland and Sodankyla region\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 1 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/tccas-sodankylae-fraction_of_absorbed_photosynthetic_active_radiation_leaf_area_index_(jrc-tip)/tccas-sodankylae-fraction_of_absorbed_photosynthetic_active_radiation_leaf_area_index_(jrc-tip).json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 2 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/tccas-sodankylae-brightness_temperature_(smos_tb)/tccas-sodankylae-brightness_temperature_(smos_tb).json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 3 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/tccas-sodankylae-soil_moisture_and_vegetation_optical_depth_(smos_sm_and_smos_l-vod)/tccas-sodankylae-soil_moisture_and_vegetation_optical_depth_(smos_sm_and_smos_l-vod).json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 4 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/tccas-sodankylae-solar_induced_chlorophyll_fluorescence_(sentinel_5p)/tccas-sodankylae-solar_induced_chlorophyll_fluorescence_(sentinel_5p).json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 5 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/tccas-sodankylae-slope_(ascat_slope)/tccas-sodankylae-slope_(ascat_slope).json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 6 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/tccas-sodankylae-photochemical_reflectance_index_(modis_pri)/tccas-sodankylae-photochemical_reflectance_index_(modis_pri).json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 7 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/tccas-sodankylae-land_surface_temperature_(modis_lst)/tccas-sodankylae-land_surface_temperature_(modis_lst).json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 8 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/tccas-sodankylae-solar_induced_chlorophyll_fluorescence_(oco-2_sif)/tccas-sodankylae-solar_induced_chlorophyll_fluorescence_(oco-2_sif).json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 9 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/tccas-sodankylae-vegetation_optical_depth_(amsr-2_vod)/tccas-sodankylae-vegetation_optical_depth_(amsr-2_vod).json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 10 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/tccas-sodankylae-insitu_package/tccas-sodankylae-insitu_package.json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 11 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/tccas-sodankylae-model_forcing/tccas-sodankylae-model_forcing.json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 12 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"item\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/tccas-sodankylae-documentation/tccas-sodankylae-documentation.json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/geo+json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 13 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " rel \n",
- " \"self\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " href \n",
- " \"/home/krasen/examples/PRR/data/example_catalog/collection.json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " type \n",
- " \"application/json\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " title \n",
- " \"Terrestrial Carbon Community Assimilation System: Database for Lapland and Sodankyla region\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " extent \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " spatial \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " bbox [] 1 items \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 [] 4 items \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " 18.0 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 1 \n",
- " 65.0 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 2 \n",
- " 32.0 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 3 \n",
- " 69.0 \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " temporal \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " interval [] 1 items \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 [] 2 items \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 0 \n",
- " \"2011-01-01T00:00:00Z\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " 1 \n",
- " \"2021-12-31T00:00:00Z\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " license \n",
- " \"various\" \n",
- " \n",
- " \n",
- " \n",
- " \n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- ""
- ]
- },
- "execution_count": 11,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "collection"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "id": "585db2d3",
- "metadata": {},
- "outputs": [],
- "source": []
- }
- ],
- "metadata": {
- "kernelspec": {
- "display_name": "pangeo",
- "language": "python",
- "name": "python3"
- },
- "language_info": {
- "codemirror_mode": {
- "name": "ipython",
- "version": 3
- },
- "file_extension": ".py",
- "mimetype": "text/x-python",
- "name": "python",
- "nbconvert_exporter": "python",
- "pygments_lexer": "ipython3",
- "version": "3.13.3"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 5
-}
diff --git a/PRR/index.md b/PRR/index.md
index 4e255ec7..62a49293 100644
--- a/PRR/index.md
+++ b/PRR/index.md
@@ -18,7 +18,7 @@ These notebooks are designed for users who are new to the process of publishing
Whether you're working with a single raster file or a large, multi-format dataset, notebooks below will assist you in this process.
- [Generating a STAC Collection for the PRR (Introduction)](./PRR_STAC_introduction.ipynb) - Detailed explanation on how to create valid metadata to ingest simple raster data file (.nc) into PRR.
-- [Generating a STAC Collection for the PRR (Multiple file types)](./example_tccas.ipynb) - Example how to generate metadata for a more complex dataset with varied data types and formats.
+- [Generating a STAC Collection for the PRR (Multiple file types)](./TCCAS_v2.ipynb) - Example how to generate metadata for a more complex dataset with varied data types and formats.
- [Generating a STAC Collection for the PRR (Large dataset for multiple regions)](./Creating%20STAC%20Catalog_from_PRR_example.ipynb) - Example focuses on handling large dataset across multiple disjoint regions.
- [Generating STAC Collection for the PRR (zarr files)](./prr_zarr.ipynb) - A guide for generating a collection from zarr files.
diff --git a/myst.yml b/myst.yml
index 097027da..dee66d31 100644
--- a/myst.yml
+++ b/myst.yml
@@ -20,9 +20,9 @@ project:
children:
- file: PRR/PRR_STAC_introduction.ipynb
- file: PRR/prr_zarr.ipynb
- - file: PRR/example_tccas.ipynb
- file: PRR/Creating STAC Catalog_from_PRR_example.ipynb
- file: PRR/PRR_STAC_download_example.ipynb
+ - file: PRR/TCCAS_v2.ipynb
- file: PRR/CareHeat_v2.ipynb
- title: Open Science Catalog (OSC)